ナレッジベース
公開されました Sep. 10, 2025

JVMタイムゾーンを変更せずにログのタイムゾーンを変更する

written-by

Liferay Support

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

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ファイルを変更できるようになります。

詳細

  1. 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\ディレクトリ内に存在します
  2. 同じ場所からlog4j.dtdファイルのコピーを取得します
  3. portal-log4j.xmlファイルのコピーの名前をportal-log4j-ext.xmlに変更します
  4. 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>
  5. 次のセクションを探してください:
    <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ログファイルに適用されます。

  6. 両方のセクションで:
    1. 下記を

      <layout class="org.apache.log4j.PatternLayout"> 

      次のように変更します。
      <layout class="org.apache.log4j.EnhancedPatternLayout">

    2. 下記を

      <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で確認できます

  7. 変更したportal-log4j-ext.xmlファイルとlog4j.dtdファイルを[Liferay_HOME]/[Tomcat_HOME]/webapps/ROOT/WEB-INF/classes/META-INFに配置します
  8. ポータルを起動します

ポータルを起動したら、スタートアップログの最初のセクションは、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"

 
Issues With Setting Time Zone Settings on the JVM Level(JVMレベルでタイムソーンを設定時の事象)
did-this-article-resolve-your-issue

ナレッジベース