在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/[email protected]@.%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/[email protected]@.%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
你有什么建议吗?
提前致谢。
在我写下答案之前:你应该重新考虑你的记录策略。根据您当前的配置,您将不会拥有“每日日志文件”,因为每天最多可以有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
)。
您的portal-log4j-ext.xml缺少层次结构中的组件:
log4j:configuration <rollingPolicy <appender喜欢于:
<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>
例如:https://www.e-systems.tech/blog/-/blogs/customizing-portal-log4j-xml
第二个细节是你似乎在创建一个新的appender,你不能从-ext.xml那里做到这一点,至少在没有重新配置.xml的记录器来使用它的情况下。实际上,这是原始文件的工作而不是ext。