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配置的文件当中

posted @ 2019-10-22 10:44  myCodeLikeShit  阅读(9336)  评论(0编辑  收藏  举报