最近、Liferay/Tomcat のログが、複数のポートレットが同じファイルにログを記録しているために詰まってしまうという問題があり、問題を追跡するのが難しい場合があります。問題を追跡しやすくするために、ポートレットごとにログ ファイルを作成することにしました。いくつかの役立つ記事を見つけましたが、何を試しても、カスタム ログ ファイルを作成することができません (拡張子によってに書かれている)。この記事に従って、次の行を liferay-plugin-package.properties に追加しました。
portal-dependency-jars=\
log4j.jar,\
log4j-extras.jar
そして、私の log4j.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.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%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="../../logs/portrait-manager-portlet.%d{yyyy-MM-dd}.log" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n" />
</layout>
</appender>
<!-- test is a legitimate package name in my code -->
<category name="com.test" >
<priority value="DEBUG" />
</category>
<root>
<priority value="INFO" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</log4j:configuration>
そして最後に、記事に従って、この方法でロギングが行われます。
private static Logger log = Logger.getLogger(PortraitManagerServiceImpl.class);
log.info("testing log4j logging");
繰り返しますが、前述のように、コンソールのログは正常に機能しますが、ログ ファイルは作成されないため、書き込むことはできません。誰かがこの行動について提案や洞察を持っている場合は、共有していただければ幸いです.
編集:私はLiferay 6.2 b1とtomcat 7.0.40を使用しています(Liferay 6.2バンドルに含まれています)