Logback 教程

Logback 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/logback-config.html

Logback 配置


Logback 在引入相关的 jar 包后,配置相应的 logback 配置文件即可。

Logback 配置的步骤

logback 配置的加载顺序如下:

  1. 尝试在 classpath 下查找文件 logback-test.xml;
  2. 如果 logback-test.xml 文件不存在,则查找文件 logback.xml;
  3. 如果上面两个文件都不存在,logback 用 BasicConfigurator 创建一个最小化配置。

BasicConfigurator 的最小化配置由一个关联到根 logger 的 ConsoleAppender 组成。输出用模式为 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的 PatternLayoutEncoder 进行格式化。root logger 默认级别是 DEBUG。

Logback 配置文件

Logback 配置以 logback.xml 为例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <!-- 控制台输出 -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %L - %msg %n</Pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %L - %msg %n</Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!-- 日志文件输出的文件名 -->
            <fileNamePattern>logs/example.%d{yyyyMMdd}.log</fileNamePattern>

            <!-- 日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>

        <!-- 日志文件最大的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>1000MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 日志异步到数据库 -->
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <!-- 日志异步到数据库 -->
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <!-- 连接池 -->
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <driverClass>com.mysql.jdbc.Driver</driverClass>
                <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
                <user>root</user>
                <password>root</password>
            </dataSource>
        </connectionSource>
    </appender>

    <!-- 日志记录器 -->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="org.hibernate.SQL" level="INFO"/>
    <logger name="org.springframework" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="fileAppender"/>
        <appender-ref ref="consoleAppender"/>
    </logger>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="consoleAppender"/>
        <appender-ref ref="fileAppender"/>
    </root>

</configuration>
logback 从 1.0.4 版本开始引入了 AsyncAppender 以支持异步写日志,异步处理日志对业务本身的性能有很大的提升作用, ...
Logback 在实际生产环境中,一般推荐使用 slf4j+logback。slf4j 定义日志接口及基本实现,而具体的实现由其他日志组件提 ...
Logback 是由 log4j 创始人 Ceki Gülcü 设计的又一个开源日志组件。Logback 分成三个模块,logback-co ...
spring boot 自带多个 log 实现,其中也包括 logback,往往开发中,开发者需要根据环境,对日志有不一样的配置操作,如不希 ...
Lombok是一个Java库,它可以通过注解来简化Java代码的编写,减少样板代码的数量。gradle`文件中:步骤2:安装Lombok插件 ...