Java基礎(九):logback實現日誌按天和大小切分
阿新 • • 發佈:2018-12-30
【前言】
專案中每天會列印很多日誌,有時候進行排錯開啟一個大的日誌檔案(我們有一個系統的線上日誌檔案大小已經超過20G)是一件很可怕的事情;對日誌進行按天的切分是一件非常有必要的事情。
【日誌按天切分】
一、在application.properties中增加log相關配置
#****************************Log**************************** zhanghan.system.log.path=/data/logs/zhanghan-log logging.config=${spring.config.location}/logback.xml
二、核心檔案logback.xml
<configuration> <contextName>zhanghan</contextName> <property resource="file:${spring.config.location}/application.properties"/> <appender name="SYSTEM_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${zhanghan.system.log.path}/logs.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${zhanghan.system.log.path}/%d{yyyy-MM-dd}/logs-%i.log</fileNamePattern> <maxFileSize>1GB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>100GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern> <charset>UTF-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="SYSTEM_STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <charset>UTF-8</charset> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="SYSTEM_STDOUT"/> <appender-ref ref="SYSTEM_FILE"/> </root> </configuration>
三、利用命令啟動時指定application.properties
nohup java $DEBUG -jar -Xmx256m -Dfile.encoding=UTF-8 -Dspring.config.location=/data/work/zhanghan/ zhanghan.jar >>zhanghan.log 2>&1 &
四、SpringBoot中分析logback依賴關係
四、效果:
【總結】
1、日誌按天切分後查詢起來容易很多;
2、多分析系統的日誌,對於優化系統非常有幫助。