在LIFERAY DXP中滚动日志

问题描述 投票:1回答:2

在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>

这里生成的文件记录:

enter image description here

问题是日期未附加到生成的文件,并且TimeBasedRollingPolicy不起作用。

我正在使用Log4j 1.2

你有什么建议吗?

提前致谢。

logging log4j liferay liferay-dxp
2个回答
1
投票

重新考虑你的战略

在我写下答案之前:你应该重新考虑你的记录策略。根据您当前的配置,您将不会拥有“每日日志文件”,因为每天最多可以有100个日志文件,每个文件大小为5KB。

因此,在最坏的情况下,您可能有100个文件包含同一天的日志,而另一个n文件丢失,因为它们会超出您的MaxBackupIndex

FileAppender

如果你的存储空间非常有限,你应该使用org.apache.log4j.RollingFileAppenderMaxFileSize以及MaxBackupIndex。但是你不能在这里定义一个DatePattern

如果要将日期添加到日志文件的名称,则应使用org.apache.log4j.DailyRollingFileAppender。但是,您既不能使用此FileAppender定义MaxFileSize也不能定义MaxBackupIndex,因此您必须创建自己的custom FileAppender

RollingPolicy

您的RollingPolicy配置似乎没问题。我的猜测是你必须将apache-log4j-extras dependency添加到你的项目中,其中包含RollingPolicy接口及其实现(例如TimeBasedRollingPolicy)。


0
投票

您的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。

© www.soinside.com 2019 - 2024. All rights reserved.