我是靠谱客的博主 犹豫帅哥,最近开发中收集的这篇文章主要介绍slf4j+logback实现日志分级输出至文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近新接手个项目,生产环境报错要查日志定位bug时,发现所有级别的日志全部输出在一个文件里,导致文件臃肿,并且难以浏览文件和定位错误日志。于是重改日志输出,最终决定使用slf4j+logback来做日志输出。
Simple Logging Facade for Java (SLF4J) 充当各种日志框架(例如 java.util.logging、logback、log4j)的简单外观或抽象,允许最终用户在部署 时插入所需的日志框架。如果项目中使用了Lombok插件,则直接在类前加上@Slf4j注解即可,否则需要引入一下依赖:

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <!--使用Lombok时不用引入-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId> 
        </dependency>

然后在resources下新建logback.xml文件

<?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="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 日志记录器,日期滚动记录 -->
    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>/home/iot/sdmchome/logs/error.log</file>
        <!--开发环境可以使用这个配置测试,测试时会在本地项目生成log文件夹-->
        <!--<file>log/error.log</file>-->
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>/home/iot/sdmchome/logs/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>
        <!-- 此日志文件只记录error级别的 -->
        <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>/home/iot/sdmchome/logs/info.log</file>
        <!--开发环境可以使用这个配置测试,测试时会在本地项目生成log文件夹-->
        <!--<file>log/info.log</file>-->
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>/home/iot/sdmchome/logs/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="STDOUT" />
        <appender-ref ref="FILEERROR" />
        <appender-ref ref="FILEINFO" />
    </root>
</configuration>

最后

以上就是犹豫帅哥为你收集整理的slf4j+logback实现日志分级输出至文件的全部内容,希望文章能够帮你解决slf4j+logback实现日志分级输出至文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部