logback 怎样覆盖(移除) root 中的的 appender-ref 配置。

希望一般的log都同时记录到屏幕和文件log.log上,输出级别为INFO。

<root level="INFO">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="FILE" />
</root>

但mybatis的sql查询日志希望特殊处理,只输出到一个专门的文件mybatis.log中,输出级别为DEBUG

目前写的是这样:

<appender name="mybatis" class="ch.qos.logback.core.FileAppender">
    <file>logs/mybatis.log</file>
    <encoder>
        <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
</appender>

<logger name="org.sang.mapper" level="DEBUG">
    <appender-ref ref="mybatis" />
</logger>

这种情况下,屏幕、log.log、mybatis.log都有有mybatis的sql查询日志输出。

如果将     
<logger name="org.sang.mapper" level="DEBUG"> 
改为
<logger name="org.sang.mapper" level="INFO">

则,屏幕、log.log、mybatis.log都没有mybatis的sql查询日志输出。

请问怎样配置可以实现我最开始的需求:
一般的log都同时记录到屏幕和文件log.log上,输出级别为INFO。
但mybatis的sql查询日志特殊处理,只输出到一个专门的文件mybatis.log中,输出级别为DEBUG

阅读 8.9k
1 个回答
<logger name="org.sang.mapper" level="DEBUG" additivity="false">
    <appender-ref ref="mybatis" />
</logger>
<root level="INFO">
    <appender-ref ref="CONFOLE" />
    <appender-ref ref="FILE" />
    ...
</root>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题