在文件 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
- 这是不可能的,将文件视为遵循 LAST In FIRST Out 的堆栈,这在调试时非常有意义,可以在最后看到最后一条消息。
- 今天的日志名称为
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 RollingFileAppender 的 header
属性,此 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>
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
- 这是不可能的,将文件视为遵循 LAST In FIRST Out 的堆栈,这在调试时非常有意义,可以在最后看到最后一条消息。
- 今天的日志名称为
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 RollingFileAppender 的 header
属性,此 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>