Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j每日轮换和每月保留任何文件附加器_Java_Logging_Log4j_Retention - Fatal编程技术网

Java Log4j每日轮换和每月保留任何文件附加器

Java Log4j每日轮换和每月保留任何文件附加器,java,logging,log4j,retention,Java,Logging,Log4j,Retention,是否可以使用任何log4j Appender写入具有特定循环时间和保留限制的日志。 目标是: 每天都有一个日志文件;在午夜为您创建一个新文件 新日志 保留日志文件并自动删除它们 经过一段时间;因此,删除早于X天(例如30天)的日志文件 似乎旋转是可能的,但使用log4j不可能限制保留时间 log4j版本是1.2。我的答案是基于logback,而不是log4j(很抱歉混淆了…) 您可以使用TimeBasedRollingPolicy实现日志轮换 (例如) 这个log4J属性适合我 log4j

是否可以使用任何log4j Appender写入具有特定循环时间和保留限制的日志。
目标是:

  • 每天都有一个日志文件;在午夜为您创建一个新文件 新日志
  • 保留日志文件并自动删除它们 经过一段时间;因此,删除早于X天(例如30天)的日志文件
似乎旋转是可能的,但使用log4j不可能限制保留时间

log4j版本是1.2。

我的答案是基于
logback
,而不是
log4j
(很抱歉混淆了…)


您可以使用
TimeBasedRollingPolicy
实现日志轮换

(例如)


这个log4J属性适合我

log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=/opt/cronjob/logs/cronlogs.log
log4j.appender.file.MaxFileSize=1028MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
是的,我们可以

文件:
project->src->main->resources->logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>folderName/logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>folderName/archive/logFile.%d{dd-MM-yyyy}.log</fileNamePattern>
      <!-- keep last 30 days of logs -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <!-- filter by level (optional) -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>DEBUG</level>
    </filter>

    <encoder>
      <pattern>%date %-5level [%thread] %file:%L [%M] - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- you can filter by type of level (optional) -->
  <root level="DEBUG">
    <appender-ref ref="FILE"/>
  </root>
</configuration>


JavaDoc:

大多数答案都是基于logback的。但问题是关于log4j1.2(旧的…)

提到DailRollingFileAppender的答案也不起作用。
org.apache.log4j.dailrollingfileappender
不支持
MaxBackupIndex
属性请参见(这是用于
RollingFileAppender

您可能对以下内容感兴趣:

至于可能的答案:


但您可能应该使用slf4j log4j“仿真”(emulation)并通过logback(无需任何代码更改)路由日志,这样更易于实现。

@PaulEdison只是好奇,这些配置是否不起作用?此解决方案基于logback而非log4jWow@Benw是对的!!我不明白为什么我会把这个问题误解为倒退。。。。。谢谢你提醒我。关于log4j,请参考他/她的答案。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>folderName/logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>folderName/archive/logFile.%d{dd-MM-yyyy}.log</fileNamePattern>
      <!-- keep last 30 days of logs -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <!-- filter by level (optional) -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>DEBUG</level>
    </filter>

    <encoder>
      <pattern>%date %-5level [%thread] %file:%L [%M] - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- you can filter by type of level (optional) -->
  <root level="DEBUG">
    <appender-ref ref="FILE"/>
  </root>
</configuration>