【问题标题】:Apppend log message at beginning of file log4j在文件 log4j 的开头附加日志消息
【发布时间】:2015-06-30 00:57:34
【问题描述】:

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

【问题讨论】:

  • 如果以下任何一个回答了您的问题,您可以关闭此页面吗?

标签: java logging configuration log4j log4j2


【解决方案1】:

您的问题显示了 log4j-1.2 配置,但由于该问题也有 log4j2 标记,因此我可以通过向您展示如何使用 log4j2 来完成此操作来回答这个问题。

在log4j2 中,您可以声明一个格式化日期的property,然后使用该属性来配置您的appender 文件名。

此外,您可以使用pattern layout 的header 属性设置在文件开头输出的标题。对于RollingFileAppender,此标头将在每次翻转时输出。

使用 log4j2 内置的 lookups 之一在翻转时动态更改标头的输出。

例子:

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

【讨论】:

  • 我们怎样才能写成 .property 而不是 .xml?
  • Log4j2 不支持 .properties 配置格式。
  • 如何为每个文件制作自定义标题?
  • 不是日期等,而是对来自java的用户做一个计数器
【解决方案2】:
  1. 不可能,将文件视为一个堆栈,它尊重 LAST In FIRST Out,这在调试以查看最后一条消息时非常有意义。
  2. 今天的日志名称为test.log,但明天将重命名为Test_2015-04-22.log

【讨论】:

  • 我已经有具有该功能的旧系统。这就是为什么实现相同的重要性
  • 两个都有
  • 你如何在文件开头写最后一条消息?创建一个新文件写入最后一条消息和旧文件中的内容?
  • 它已经在那里实现了,我必须实现同样的。
猜你喜欢
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 2017-05-31
相关资源
最近更新 更多