尝试在Liferay DXP中自定义日志滚动策略时遇到问题。
在portal-log4j-ext.xml
文件中,我想:
在portal-log4j-ext.xml之上:
<appender name="PROJECT" class="org.apache.log4j.RollingFileAppender">
<!-- The active file to log to -->
<param name="file" value="@liferay.home@/logs/logging/liferay@spi.id@.%d.log" />
<param name="MaxFileSize" value="5KB"/>
<param name="MaxBackupIndex" value="100"/>
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<!-- Keep one backup file -->
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="@liferay.home@/logs/logging/archive/liferay@spi.id@.%d.log.gz" />
</rollingPolicy>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="[%d{dd.MM.yyyy HH:mm:ss}{Europe/Paris}] %-5p [%t][%c{1}:%L] %m%n" />
</layout>
</appender>
<root>
<priority value="INFO" />
<appender-ref ref="PROJECT" />
<!--appender-ref ref="CONSOLE" /-->
<!--appender-ref ref="XML_FILE" /-->
<!--<appender-ref ref="TEXT_FILE" />-->
</root>
在这里生成文件日志:
问题在于日期未附加到生成的文件中,并且TimeBasedRollingPolicy无法正常工作。
我正在使用Log4j 1.2
您有什么建议吗?
谢谢。
答案 0 :(得分:1)
在写下答案之前,您应该重新考虑您的日志记录策略。 根据当前的配置,您将没有“ the 每日日志文件”,因为最多可能有100个每日日志文件,每个文件的大小为5KB。
因此,在最坏的情况下,您可能有100个文件包含同一天的日志,而另外n
个文件丢失了,因为它们会占用您的MaxBackupIndex
。
如果存储空间非常有限,则应将org.apache.log4j.RollingFileAppender
与MaxFileSize
和MaxBackupIndex
一起使用。但是,您不能在此处定义DatePattern
。
如果要将日期添加到日志文件的名称中,则应使用org.apache.log4j.DailyRollingFileAppender
。但是,您无法使用此FileAppender定义MaxFileSize
或MaxBackupIndex
,因此必须创建自己的custom FileAppender。
您的RollingPolicy配置似乎很好。我的猜测是,您必须将apache-log4j-extras dependency添加到您的项目中,该项目包含RollingPolicy
接口及其实现(例如TimeBasedRollingPolicy
)。
答案 1 :(得分:0)
您的portal-log4j-ext.xml缺少层次结构中的组件:
log4j:配置 示例来自:https://www.e-systems.tech/blog/-/blogs/customizing-portal-log4j-xml 第二个细节是,您似乎正在创建一个新的附加程序,您无法从-ext.xml中执行此操作,至少不能从.xml中重新配置记录器以使用它。实际上,这是原始文件的工作,而不是ext。<appender class="org.apache.log4j.rolling.RollingFileAppender" name="TEXT_FILE">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
</rollingPolicy>
<layout class="org.apache.log4j.EnhancedPatternLayout">
</layout>
</appender>