logback 每天生成和大小生成 冲突 TimeBasedRollingPolicy SizeBasedTriggeringPolicy
2017-03-31 10:40
429 查看
项目使用了logback,日志打印需要按照每天和大小生成日志,于是使用了TimeBasedRollingPolicy SizeBasedTriggeringPolicy
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/consumer.%d{yyyy-MM-dd_HH}.log</FileNamePattern> <!-- 日志文件保留天数 --> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <!-- 文件大小触发重写新文件 --> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender>但是在实际使用中并未有按照预期根据日期和大小生成日志,查了了相关文章说是TimeBasedRollingPolicy和SizeBasedTriggeringPolicy冲突,在根据网上的资料去看了logback的官网地址https://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP,在游览了之后发现了最重要的部分
Size and time based rolling policy Sometimes you may wish to archive files essentially by date but at the same time limit the size of each log file, in particular if post-processing tools impose size limits on the log files. In order to address this requirement, logback ships with SizeAndTimeBasedRollingPolicy. Note that TimeBasedRollingPolicy already allows limiting the combined size of archived log files. If you only wish to limit the combined size of log archives, then TimeBasedRollingPolicy described above and setting the totalSizeCap property should be amply sufficent. Here is a sample configuration file demonstrating time and size based log file archiving. Example: Sample configuration for SizeAndTimeBasedFNATP (logback-examples/src/main/resources/chapters/appenders/conf/logback-sizeAndTime.xml) View as .groovy <configuration> <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>mylog.txt</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="ROLLING" /> </root> </configuration>然后就发现logback还有一个SizeAndTimeBasedRollingPolicy,所以根据官网修改我的配置文件为
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOG_HOME}/consumer.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender>然后就ok了,日志文件中的%d、%i是不可缺少的。
相关文章推荐
- logback的SizeBasedTriggeringPolicy和TimeBasedRollingPolicy联合使用问题
- Logback (6) | SizeAndTimeBasedFNATP is deprecated. Use SizeAndTimeBasedRollingPolicy instead
- logback TimeBasedRollingPolicy遇到的问题
- Logback (5) | The FileNamePattern option must be set before using TimeBasedRollingPolicy
- Logback (2) | TriggeringPolicy has not started. RollingFileAppender will not start
- php 修改上传文件大小 (max_execution_time post_max_size)
- php 修改上传文件大小 (max_execution_time post_max_size)
- 限制Apache日志文件大小和每天生成日志文件的方法
- php 修改上传文件大小 (max_execution_time post_max_size)
- Log4j使用笔记(二):每天生成一个日志文件、按日志大小生成文件
- logback.xml按时间和文件大小生成日志(分级别)
- Scripts:计算每天的redo大小awr_redo_nologging_size.sql
- logback、log4j未按天生成日志或者超过文件大小限制未生成新的日志解决方法
- Log4j使用笔记:每天生成一个日志文件、按日志大小生成文件
- php 修改上传文件大小 (max_execution_time post_max_size)
- 修改 Logback FixedWindowRollingPolicy 最多支持20个文件限制
- SizeBasedAndTimeBasedLog
- 孙鑫vc++ 第九课 笔记 修改MFC AppWizard向导生成的框架程序的外观和大小
- 上传图片,并生成缩略图(指定大小)
- 用as自動生成time表