是否可以使用任何log4j附加器来写入具有特定循环时间和保留限制的日志。目标是:
似乎可以旋转,但保留时间的限制不可能与log4jlog4j版本为1.2。
r3i60tvu1#
这个log4J属性对我有用
log4j.rootLogger=DEBUG, stdout, file# Redirect log messages to consolelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.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.DailyRollingFileAppenderlog4j.appender.file.File=/opt/cronjob/logs/cronlogs.loglog4j.appender.file.MaxFileSize=1028MBlog4j.appender.file.MaxBackupIndex=10log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
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
zpjtge222#
大部分的答案都是基于logback的。但是这个问题是关于log4j 1. 2(旧的...)提到DailyRollingFileAppender的答案也不起作用。org.apache.log4j.DailyRollingFileAppender不支持MaxBackupIndex属性,请参阅http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html(这适用于RollingFileAppender)您可能对以下内容感兴趣:Use MaxBackupIndex in DailyRollingFileAppender -log4j和一个可能的答案:Log4j Rollingpolicy and MaxbackupIndex但是,您可能应该使用slf 4j log4j“模拟”(http://www.slf4j.org/legacy.html#log4j-over-slf4j),并通过logback路由日志(无需任何代码更改),这样更容易实现。
org.apache.log4j.DailyRollingFileAppender
MaxBackupIndex
RollingFileAppender
nukf8bse3#
我的答案是基于logback,而不是log4j(很抱歉造成混淆..)
logback
log4j
您可以使用TimeBasedRollingPolicy来实现日志循环。(例如)
TimeBasedRollingPolicy
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/system.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern> <!-- keep last 30 days of logs --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <charset>UTF-8</charset> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern> </encoder></appender>
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern>
<!-- keep last 30 days of logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern>
</encoder>
</appender>
它将在午夜循环,并将删除超过30天的日志文件。文件名模式:滚动期是从fileNamePattern的值推断出来的最大历史记录:可选的maxHistory属性控制要保留的存档文件的最大数量,并异步删除较旧的文件。例如,如果指定每月滚动,并将maxHistory设置为6,则将保留6个月的存档文件,并删除6个月之前的文件。请注意,由于旧的存档日志文件已被删除,将根据需要删除为日志文件存档而创建的任何文件夹。您可以查看有关TimeBasedRollingPolicy的详细信息
baubqpgj4#
这可以通过回登录来完成!文件:project->src->main->resources->logback.xml
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>
<?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>
<fileNamePattern>folderName/archive/logFile.%d{dd-MM-yyyy}.log</fileNamePattern>
<!-- filter by level (optional) -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
</filter>
<pattern>%date %-5level [%thread] %file:%L [%M] - %msg%n</pattern>
<!-- you can filter by type of level (optional) -->
<root level="DEBUG">
<appender-ref ref="FILE"/>
</root>
</configuration>
有关详细信息,请参阅文档:基于时间的滚动策略Java文件:TimeBasedRollingPolicy
4条答案
按热度按时间r3i60tvu1#
这个log4J属性对我有用
zpjtge222#
大部分的答案都是基于logback的。但是这个问题是关于log4j 1. 2(旧的...)
提到DailyRollingFileAppender的答案也不起作用。
org.apache.log4j.DailyRollingFileAppender
不支持MaxBackupIndex
属性,请参阅http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html(这适用于RollingFileAppender
)您可能对以下内容感兴趣:Use MaxBackupIndex in DailyRollingFileAppender -log4j
和一个可能的答案:Log4j Rollingpolicy and MaxbackupIndex
但是,您可能应该使用slf 4j log4j“模拟”(http://www.slf4j.org/legacy.html#log4j-over-slf4j),并通过logback路由日志(无需任何代码更改),这样更容易实现。
nukf8bse3#
我的答案是基于
logback
,而不是log4j
(很抱歉造成混淆..)您可以使用
TimeBasedRollingPolicy
来实现日志循环。(例如)
它将在午夜循环,并将删除超过30天的日志文件。
文件名模式:滚动期是从fileNamePattern的值推断出来的
最大历史记录:可选的maxHistory属性控制要保留的存档文件的最大数量,并异步删除较旧的文件。例如,如果指定每月滚动,并将maxHistory设置为6,则将保留6个月的存档文件,并删除6个月之前的文件。请注意,由于旧的存档日志文件已被删除,将根据需要删除为日志文件存档而创建的任何文件夹。
您可以查看有关TimeBasedRollingPolicy的详细信息
baubqpgj4#
这可以通过回登录来完成!
文件:
project->src->main->resources->logback.xml
有关详细信息,请参阅文档:基于时间的滚动策略
Java文件:TimeBasedRollingPolicy