This article is a legacy article. It applies to previous versions of the Liferay product. While the article is no longer maintained, the information may still be applicable.
この記事では、portal-log4j.xmlファイルをカスタマイズし、ログファイルのタイムゾーンを調整る方法について説明します。次の手順は、サーバーログファイル(例:tomcat_home/logs)ではなく、Liferay_home/logsファイルを変更できるようになります。
詳細
-
portal-log4j.xmlファイルのコピーはportal-impl.jarもしくはソースコード内から抽出できます。今回は、portal-impl.jarの方法で進めます。portal-impl.jarは[Liferay_HOME]\[Tomcat_HOME]\webapps\ROOT\WEB-INF\lib\portal-impl.jar\META-INF\ディレクトリ内に存在します - 同じ場所から
log4j.dtdファイルのコピーを取得します -
portal-log4j.xmlファイルのコピーの名前をportal-log4j-ext.xmlに変更します -
portal-log4j-ext.xmlファイルは、portal-impl.jar内の元のプロパティを上書きするので、portal-log4j-ext.xmlファイル内には次の内容だけを記述します。<?xml version="1.0"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}:%L] %m%n" /> </layout> </appender> <appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender"> <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> <param name="FileNamePattern" value="@liferay.home@/logs/liferay@spi.id@.%d{yyyy-MM-dd}.log" /> </rollingPolicy> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}:%L] %m%n" /> </layout> </appender> <root> <priority value="INFO" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </log4j:configuration> - 次のセクションを探してください:
<layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}:%L] %m%n" /> </layout>portal-log4j-ext.xmlファイルを確認すると判るように、実際にはこのセクションには2つのコピーがあります。最初のセクションは
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"></appender>ノード内にあり、そのセクションに対する設定はコンソールログファイルに適用されます。2番目のセクションは
<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender"></appender>ノード内にあり、指定されたファイルシステムの場所に格納されている@liferay.home@/logs/liferay.%d{yyyy-MM-dd}.logログファイルに適用されます。 - 両方のセクションで:
-
下記を
<layout class="org.apache.log4j.PatternLayout">次のように変更します。
<layout class="org.apache.log4j.EnhancedPatternLayout"> - 下記を
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}:%L] %m%n" />次のように変更します。
<param name="ConversionPattern" value="%d{ABSOLUTE}{TIMEZONE} %-5p [%t][%c{1}:%L] %m%n" />
TIME ZONEへの設定値は、http://en.wikipedia.org/wiki/List_of_zoneinfo_timezonesで確認できます
-
- 変更した
portal-log4j-ext.xmlファイルとlog4j.dtdファイルを[Liferay_HOME]/[Tomcat_HOME]/webapps/ROOT/WEB-INF/classes/META-INFに配置します - ポータルを起動します
ポータルを起動したら、スタートアップログの最初のセクションは、GMT (これはJVMのタイムゾーン設定によって制御されるはずです)ですが、データベースコネクションのセクション以降は、タイムゾーンは指定した時間になります。 データベースコネクション セクションから始まる全ての情報は、Liferay([Liferay_HOME/logs])のログファイルに記録されますので注意してください。
上記のようなカスタムログファイルを既にデプロイしている場合は、これらの変更をこのファイルに追加するか、またはext-impl.jarの一部として組み込むことができます。既存のext-impl.jarファイルがある場合は、ext-のソースコードの${EXT}/docroot/WEB-INF/ext-impl/src/META-INFに入っているので、そのextコンパイルして置き換える必要があります。
この方法は、エンドユーザーが簡単に変更を加えられる必要がある場合、もしくはextを再コンパイルすることなくロギングの変更を取り除く必要があるような場合有効です。
追加情報
JVMで実行されるすべてのプロセスに影響するので、JVMレベル(tomcatのsetenv.batまたはsetenv.shを参照)でタイムゾーン設定を変更しないでください。具体的には、タイムゾーンがJVMレベルでGMTに設定されていないと、カレンダーポートレットが正しく機能しないことがあります。
set "JAVA_OPTS"=%JAVA_OPTS% -Dfile.encoding=UTF8 -Djava.net.preferIPv4Stack=true -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"