在文件 log4j 的开头追加日志消息

Apppend log message at beginning of file log4j

1. 我正在尝试在文件开头添加日志消息,以便我可以首先在日志文件中看到最新消息。

2. 我想在日志文件后添加月份和年份,但我没有在当前活动文件中得到它。例如 - test_2015-04-22.log

属性 文件如下 -

log4j.appender.APP=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP.File=${catalina.base}/logs/test.log
log4j.appender.APP.Append=true
log4j.appender.APP.Encoding=UTF-8
log4j.appender.APP.DatePattern='.'yyyy-MM
log4j.appender.APP.layout = org.apache.log4j.PatternLayout
log4j.appender.APP.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm} - %m%n
log4j.appender.APP.filePattern =Test_%d{yyyy-MM-dd}.log
  1. 这是不可能的,将文件视为遵循 LAST In FIRST Out 的堆栈,这在调试时非常有意义,可以在最后看到最后一条消息。
  2. 今天的日志名称为 test.log,但明天将重命名为 Test_2015-04-22.log

你的问题显示了 log4j-1.2 配置,但由于问题也有 log4j2 标签,我随时可以通过向你展示如何使用 log4j2 来完成这个来回答这个问题。

在格式化日期的log4j2, you can declare a property中,然后使用这个属性来配置你的appender文件名。

此外,您可以使用 pattern layout to set a header that is output at the beginning of a file. For RollingFileAppenderheader 属性,此 header 将在每次翻转时输出。

使用 lookups built-in 之一到 log4j2 在翻转时动态更改 header 的输出。

示例:

<Configuration status="WARN"><!-- use TRACE to troubleshoot your config if needed-->
  <Properties>
    <property name="yyyyMMdd">${date:yyyyMMdd}</property>
  </Properties>

  <Appenders>
    <RollingFile name="Application" 
            fileName="${sys:catalina.base}/logs/test${sys:yyyyMMdd}.log"
            filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout header="File: ${main:--file}">
        <Pattern>%d{yyyy-MM-dd HH:mm} - %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
      </Policies>
    </RollingFile>
  <Appenders>

  <Loggers>
    <root level="trace">
      <AppenderRef ref="Application" />
    </root>
  </Loggers>
</Configuration>