您当前的位置:首页 > 计算机 > 编程开发 > Java

Logback依赖配置

时间:02-06来源:作者:点击数:

在IntelliJ IDEA中创建一个基于gradle的Java项目,然后添加依赖:

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'

或:

    implementation 'ch.qos.logback:logback-classic:1.2.3'

我们只需要依赖logback-classic即可,通过双击gradle命令:dependencies,如下:

在这里插入图片描述

从这里可知logback-classic库依赖了logback-core和slf4j-api,所以我们只需要依赖logback-classic即可。

代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {

    private final static Logger logger = LoggerFactory.getLogger(Test.class);

    public static void main(String[] args) {
        logger.debug("Hello World!");
    }
}

注意别导错包。运行结果如下:

10:24:47.915 [main] INFO cn.android666.Test - Hello World!

如果需要对输出进行配置,则需要创建一个logback.xml文件来进行配置,此文件需要放到资源目录,在IntelliJ IDEA中可以这样快捷创建资源目录,在src目录上右击,如下:

在这里插入图片描述

然后会出现一个新建目录的对话框,双击main\resources即可创建出资源目录,如下:

在这里插入图片描述
在这里插入图片描述

然后在resources目录创建logback.xml,并输入如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 控制台输出 -->
    <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>
    <!-- 日志输出级别 -->
    <root level="trace">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

再次运行程序,输出结果如下:

09:40:04.683 [main] DEBUG android666.cn.Test - Hello World!

配置输出到文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 控制台输出 -->
    <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>

    <!--用于保存log到文件的Appender配置-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 根据文件名称的模式,设置按天回滚 -->
            <fileNamePattern>D:/logs/%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 最大历史天数,即保存多少天的日志文件 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 对记录事件进行格式化 -->
        <encoder charset="UTF-8" class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%-5level] - %d{HH:mm:ss.SSS} [%thread] %logger{50} -- %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 日志输出级别 -->
    <root level="trace">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

设置Error级别的保存到一个单独的文件,即调用loger.error()进行输出的才会保存到一个指定的文件中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 控制台输出 -->
    <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>

    <!--用于保存Bug的Appender配置-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 过虑掉小于ERROR级别的日志,所有级别: TRACE < DEBUG < INFO < WARN < ERROR -->
            <level>ERROR</level>
        </filter>
  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 根据文件名称的模式,设置按天回滚 -->
            <fileNamePattern>D:/bugs/%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 最大历史天数,即保存多少天的日志文件 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 对记录事件进行格式化 -->
        <encoder charset="UTF-8" class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%-5level] - %d{HH:mm:ss.SSS} [%thread] %logger{50} -- %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 日志输出级别 -->
    <root level="trace">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门