我最近遇到了一些问题,我的 Liferay/Tomcat 日志被多个记录到相同文件的 portlet 阻塞,这使得有时很难追踪问题。决定我想为每个 portlet 创建一个日志文件,以便更容易跟踪问题,并且我找到了一些有用的文章,但无论我尝试什么,我都无法创建自定义日志文件(并且通过扩展写入)。根据这篇文章,我在 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 捆绑包中)