對日志分割的常見需求是,需要按不同的等級進行輸出,這個的配置方式類似如下,在appender節點內添加內容
<appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter" >
<Level>INFO</Level>
<OnMatch>ACCEPT</OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/admin-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>1GB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>
</appender>
其他ERROR級別的日志同理配置,關於這個filter,其實還可以去實現自定義的filter,然后class寫這個類的引用即可,類似com.xxx.yyy.filter.LogFilter
但是今天突然有個新的需求,是需要獨立某個包或者類的文件出來,原因是者塊的日志需要單獨分析,且量多,於是在一頓google之后,得到如下的配置結果
下面設置logger中,表示對類或者包的日志輸出進行限制,注意不需要再加入到root中去
<logger name="com.xxx.yyyy.controller.WebLogController" level="INFO" additivity="false" >
<appender-ref ref="FRONT-END-FILE"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO">
<appender-ref ref="FILE-1"/>
<appender-ref ref="FILE-2"/>
</root>
配置的方式也是很簡單,添加一個logger節點,name是你需要控制到的包或類,level是輸出等級,additivity表示是否也需要添加到root日志中去
然后root日志還是和以往一樣,這樣在配置好了之后,運行時能看到,WebLogController的日志被獨立開來了,沒有出現root配置的文件當中