zoukankan      html  css  js  c++  java
  • SLF4J+LogBack实现不同级别的日志输出到不同文件

    1 使用@Slf4j的正确方法

    https://blog.csdn.net/cslucifer/article/details/80953400

    2 SLF4J+LogBack实现不同级别的日志输出到不同文件

     https://blog.csdn.net/weixin_41884010/article/details/98053646

    lombok+slf4j+logback SLF4J和Logback日志框架详解

    https://www.cnblogs.com/diegodu/p/6098084.html

    4 Slf4j日志配置文件 logback.xml

    https://blog.csdn.net/qq_38428623/article/details/82080509

     
    在项目开发中往往需要将不同的级别,不同包,不同接口的日志输出到不同的文件中,在利用SLF4J+LogBack实现此功能在配置文件中根据不同的级别,包,接口配置不同的appender日志记录器。

    1.LogBack配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true">

    <!-- 日志编码 -->
    <property name="CHARSET" value="utf-8"></property>
    <!-- 日志记录格式 -->
    <property name="ERROR_PATTERN"
    value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" />
    <property name="INFO_PATTERN"
    value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" />

    <!-- 日志记录器,日期滚动记录 -->
    <appender name="FILEERROR"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>log/log_error.log</file>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy
    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>log/error/log-error-%d{yyyy-MM-dd}.%i.log
    </fileNamePattern>
    <maxFileSize>6MB</maxFileSize>
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <!-- 追加方式记录日志 -->
    <append>true</append>
    <!-- 日志文件的格式 -->
    <encoder
    class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <pattern>${ERROR_PATTERN}</pattern>
    <charset>${CHARSET}</charset>
    </encoder>
    <!-- 此日志文件只记录info级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>error</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <!-- 日志记录器,日期滚动记录 -->
    <appender name="FILEINFO"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>log/log_info.log</file>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy
    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>log/info/log-info-%d{yyyy-MM-dd}.%i.log
    </fileNamePattern>
    <maxFileSize>6MB</maxFileSize>
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <!-- 追加方式记录日志 -->
    <append>true</append>
    <!-- 日志文件的格式 -->
    <encoder
    class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <pattern>${ERROR_PATTERN}</pattern>
    <charset>${CHARSET}</charset>
    </encoder>
    <!-- 此日志文件只记录info级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>info</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <root level="INFO">
    <appender-ref ref="FILEERROR" />
    <appender-ref ref="FILEINFO" />
    </root>

    </configuration>
    对LogBack各个节点的详细介绍可以看Albin的文章>>logback节点配置详解

    2.日志测试类
    public class LogService {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    public void logMethod() {
    try {
    logger.info("Method start");
    throw new Exception("Method get out a error");
    }catch(Exception e) {
    logger.error(e.getMessage());
    }
    }
    }
    Junit测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class LogServiceTest {

    @Test
    public void logtest() {
    LogService test = new LogService();
    test.logMethod();
    }
    }
    3.日志输出结果
    log_info.log
    2019-08-01 16:22:54.580 INFO com.example.demo.logservice.LogService Line:12 -Method start
    log_error.log
    2019-08-01 16:22:54.581 ERROR com.example.demo.logservice.LogService Line:15 -Method get out a error
     
    ————————————————
    版权声明:本文为CSDN博主「小小孟啊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_41884010/article/details/98053646

  • 相关阅读:
    java7底层源码
    google的collection
    2017年八大顶尖的技术趋势
    【译】STM32L4x6系列用户手册第四章
    FRDM-KL43开发板驱动段式液晶SLCD的实现方法
    如何根据丝印查找相关的产品型号
    Arduino Tian开发板:一个功能强大的天气预报中心
    在STM32F746G-DISCO开发板上使用Nabto + FreeRTOS的演示热泵应用
    为LPC1549 LPCXpresso评估板开发基于mbed的项目
    使用LPCXpresso开发板调试外部的电路板
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/13275044.html
Copyright © 2011-2022 走看看