logback为不同的包或类指定输出日志文件
对日志分割的常见需求是,需要按不同的等级进行输出,这个的配置方式类似如下,在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配置的文件当中