Logback 在引入相关的 jar 包后,配置相应的 logback 配置文件即可。
Logback 配置的步骤
logback 配置的加载顺序如下:
- 尝试在 classpath 下查找文件 logback-test.xml;
- 如果 logback-test.xml 文件不存在,则查找文件 logback.xml;
- 如果上面两个文件都不存在,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>