Log4J2 - RollingFile Appender继续滚动

时间:2017-01-16 11:51:40

标签: java log4j2

我正在开发一个小的REST服务,它将其信息记录到每月滚动日志文件中。至少它应该。但是,一旦基于时间的滚动触发器启动,随后的每个logstatement都会创建一个新的logroll。

这是我的配置文件:

{
  "configuration": {
  "name": "Default",
  "properties": {
     "property": {
        "name":"FileName",
        "value":"restService.log"
     }
  },
  "appenders": {
     "Console": {
        "name":"stdout",
        "PatternLayout": {
           "pattern":"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"
        }
     },
     "RollingFile": {
        "name":"File",
        "fileName":"./${FileName}",
        "filePattern":"./${date:yyyy-MM}/restService-%d{yyyy-MM-dd}-%i.log.gz",
        "PatternLayout": {
           "pattern":"%d %p %logger{36}.%M():%L [%t ThreadId:%T]: %m%n"
        },
        "Policies": {
           "CronTriggeringPolicy": {
              "schedule":"0 0 0 1 * ?"
           }
        }
     }
  },
  "loggers": {
     "root": {
        "level":"info",
        "appender-ref": {
          "ref":"File"
        }
     }
  }
 }
}

这会每个月创建一个子目录,上个月应该只有一个日志文件。

E.g。如果月份从2016/12更改为2017/01,则会有一个名为“2017-01”的目录,其中包含从文件restService复制的名为“restService-2017-01-01-1.log.gz”的滚动日志文件。登录高一级的目录。

它可以正常工作,但如果服务将新消息记录到其日志文件,则会在子目录“2017-01”中创建一个新的归档日志文件,并将其命名为“restService-2017-01-01-2.log”。 gz“和基本的日志文件应该包含在这个正在进行的月份记录的所有内容 触发器触发后的每条日志消息都会发生这种情况,默认滚动最大值为7,上个月的整个日志将在7条新日志消息后删除。

有人知道,我做错了什么或能指出我的方向吗?

提前谢谢你。 ubreckner

0 个答案:

没有答案