Logback是一种流行的日志框架,它的架构大致如下:
Logback通过不同的Appender将日志输出到不同的目的地。
- File,将日志输出至文件
- Console,将日志输出至控制台
- Socket,将日志输出至远程计算机
- JDBC,将日志输出至数据库
在输出日志的过程中,通过Filter来过滤哪些日志需要被输出,哪些日志不需要输出。
最后通过Layout来格式化日志信息。
上述结构虽然复杂,但我们实际使用的时候,并不需要关心Logback的API,而是通过配置文件来配置它。
在resources
目录下添加logback-spring.xml
配置文件,logback会读取这个配置文件并按照里面的配置输出日志。
注意哈,SpringBoot2.2.x版本该配置文件的名字为logback.xml
,但SpringBoot2.3及以上版本该文件的名字叫logback-spring.xml
,否则Logback识别不出该配置文件。
我们来看看这个logback-spring.xml
这个配置文件的内容。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 修改一下路径-->
<property name="PATH" value="./log"></property>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>
</encoder>
</appender>
<appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/trace.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<root level="TRACE">
<appender-ref ref="TRACE_FILE" />
</root>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
<root level="ERROR"></root>
level
用来标识日志级别,比如ERROR
、TRACE
、INFO
。<appender name="ERROR_FILE"></appender>
Logback通过不同的Appender把日志输出到不同的目的地。<filter><level>ERROR</level></filter>
通过Filter来过滤哪些log需要被输出,哪些log不需要被输出,如只输出WARN日志。<layout><pattern></pattern></layout>
通过Layout来格式化日志信息。
看个例子,启动一个SpringBoot项目试试。
//WikiApplication.java
package com.jepcc.wiki;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WikiApplication {
public static void main(String[] args) {
SpringApplication.run(WikiApplication.class, args);
}
}
来看看默认的日志和自定义日志之间的不一样。
现在对WikiApplication.java
的内容稍作修改,如下,
package com.jepcc.wiki;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
@SpringBootApplication
public class WikiApplication {
// public static void main(String[] args) {
// SpringApplication.run(WikiApplication.class, args);
// }
private static final Logger LOG = LoggerFactory.getLogger(WikiApplication.class);
public static void main(String[] args){
SpringApplication app = new SpringApplication(WikiApplication.class);
Environment env = app.run(args).getEnvironment();
LOG.info("启动成功!");
LOG.info("地址:\t http://127.0.0.1:{}",env.getProperty("server.port"));
}
}
WikiApplication.java
里有这么一句:env.getProperty("server.port")
,server.port
这个参数值在application.properties
中进行配置。
server.port = 8000
再运行下代码试试。
2021-04-19 13:52:44.847 INFO com.jepcc.wiki.WikiApplication:20 main 启动成功!
2021-04-19 13:52:44.857 INFO com.jepcc.wiki.WikiApplication:21 main 地址: http://127.0.0.1:8000
最后来看看如何修改启动图案。
在resources
目录下新增banner.txt
文本,该文本内容就是启动图案。
关于图案,可以在这个banner文字生成利器上获取。