• 【Log】logback实现每个类和包自定义级别输出


      本例想实现对类或者包中的日志,自定义级别输出

    方法一

      1、自定义日志级别方式如下:

        代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor");  //在声明实例时创建自定义级别标签,monitor就是自定义的标签。

      2、输出日志采用这样的方式:

        代码文件:monitorLogger.info("======info");

      3、配置文件:声明Logger的处理节点

     1 <!-- 时间滚动输出 level为 monitor 日志 -->
     2 <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
     3     <filter class="ch.qos.logback.classic.filter.LevelFilter">
     4         <level>INFO</level>
     5         <onMatch>ACCEPT</onMatch>
     6         <onMismatch>DENY</onMismatch>
     7     </filter>
     8     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     9         <FileNamePattern>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
    10         <MaxHistory>30</MaxHistory>
    11     </rollingPolicy>
    12     <encoder>
    13         <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
    14     </encoder>
    15 </appender>
    16 
    17 <!-- name="monitor":设置日志名为monitor的日志 -->
    18 <!-- additivity="false":只在当前appender中打印 -->
    19 <logger name="monitor" additivity="false">
    20     
    21     <!-- 添加appender -->
    22     <appender-ref ref="file—monitor"/>  
    23 </logger> 

    方法二

      1、自定义日志级别方式如下:

        代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor");  //在声明实例时创建自定义级别标签,monitor就是自定义的标签。

      2、输出日志采用这样的方式:

        代码文件:monitorLogger.info("======info");

      3、自定义过滤器SampleFilter.java

     1 package com.test;
     2 
     3 import ch.qos.logback.classic.spi.ILoggingEvent;
     4 import ch.qos.logback.core.filter.Filter;
     5 import ch.qos.logback.core.spi.FilterReply;
     6 
     7 /**
     8  * 日志过滤器
     9  * @author H__D
    10  * @date 2019-07-12 01:22:26
    11  *
    12  */
    13 public class SampleFilter extends Filter<ILoggingEvent> {
    14 
    15     @Override
    16     public FilterReply decide(ILoggingEvent event) {
    17         
    18         // 判断日志名是否包含monitor
    19         if (event.getLoggerName().contains("monitor")) {
    20             return FilterReply.ACCEPT;
    21         } 
    22         return FilterReply.DENY;
    23 
    24     }
    25 }

      4、在配置文件appender中使用过滤器

     1 <!-- 时间滚动输出 level为 monitor 日志 -->
     2 <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
     3     <!-- 使用自定义过滤器 -->
     4     <filter class="com.test.SampleFilter">/filter>
     5     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     6         <FileNamePattern>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
     7         <MaxHistory>30</MaxHistory>
     8     </rollingPolicy>
     9     <encoder>
    10         <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
    11     </encoder>
    12 </appender>
    13 
    14 <!-- name="monitor":设置日志名为monitor的日志 -->
    15 <!-- additivity="false":只在当前appender中打印 -->
    16 <logger name="monitor" additivity="false">
    17     
    18     <!-- 添加appender -->
    19     <appender-ref ref="file—monitor"/>  
    20 </logger>  

      

  • 相关阅读:
    asp.net 添加引用类型自动变为GAC
    FPDFCJK.BIN下载(Foxit Reader中/日/韩CJK文字符支持包)
    Failed to access IIS metabase.
    Failed to access IIS metabase.
    判断用户计算机是否安装了sql server
    (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer)
    当你被利用的价值越来越小时,路会越来越窄.
    tomcat 6.0如何配置虚拟目录?tomcat 6.0 不能列目录?
    史上最高科技,Big Data奥运
    基于ping命令的网络故障排查方法
  • 原文地址:https://www.cnblogs.com/h--d/p/11173748.html
Copyright © 2020-2023  润新知