1

我在尝试在 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

你有什么建议吗?

提前致谢。

4

2 回答 2

1

重新考虑你的策略

在我写下答案之前:您应该重新考虑您的日志记录策略。您不会有基于当前配置的“每日日志文件”,因为可能有多达 100 个每日日志文件,每个文件的大小为 5KB

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

FileAppender

如果您的存储空间非常有限,则应使用org.apache.log4j.RollingFileAppenderwithMaxFileSizeMaxBackupIndex. 但是,您不能在DatePattern此处定义 a。

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

滚动策略

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

于 2019-02-08T09:57:06.017 回答
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

第二个细节是您似乎正在创建一个新的附加程序,您无法从 -ext.xml 执行此操作,至少在不从 .xml 重新配置记录器以使用它的情况下无法执行此操作。实际上,这是原始文件的工作,而不是 ext。

于 2019-02-21T16:37:26.430 回答