后端技术栈之日志框架logback
- 框架介绍
- 框架引入
- 框架配置
- 框架使用
框架介绍
Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:
- logback-core:其它两个模块的基础模块
- logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
- logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能
框架引入
spring boot本身已经集成了logback框架,直接引入即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
框架配置
在src/main/resources目录下添加logback.xml文件,即可自定义日志配置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!--定义日志文件的存储地址,后面通过${LOG_HOME}获取,勿在 LogBack 的配置中使用相对路径,存在疑问? 我这里使用相对地址就是当前目录下 -->
<property name="LOG_HOME" value="logs" />
<!-- 可选:定义文件名称 -->
<property name="PROJECT_NAME" value="logproject" />
<!-- appender 必选节点。作用:日志输出目的地, 配置后由 root 标签进行选择控制是否输出到目的地 -->
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 日志格式化 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- appender 必选节点。作用:日志输出目的地, 配置后由 root 标签进行选择控制是否输出到目的地 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- rollingPolicy 日志生成策略,不同的策略不同的类。 特别注意:尺寸切割和时间切割的日志类SizeAndTimeBasedRollingPolicy -->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 --> <!-- 按照每天生成日志文件 -->
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.%d{yyyy-MM-dd}.%i.log
</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>15</MaxHistory>
<!-- 每个日志文件大小,单位 kb、MB 等,这个功能控制不稳定,因为打印日志速度太快,每个文件会变大。 -->
<maxFileSize>100kb</maxFileSize>
<!-- 日志总体积大小,超过了就会删除前面的旧日志文件腾出空间,可以边打印边看结果 -->
<totalSizeCap>10MB</totalSizeCap>
</rollingPolicy>
<!-- encoder 日志格式化 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!-- 日志文件最大的大小, 超过了就不打印日志了,超级坑爹,千万别用。 -->
<!-- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> -->
</appender>
<!-- root必选节点:1.基础的日志输出级别配置,2.控制那些appender输出 -->
<root level="INFO">
<!-- 注意:全部注释了,那么不输出日志了。 但是不影响 logger 标签的配置输出。 -->
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!-- logger可选节点:单独配置某个"包"或者"某个类"下面的日志等级。 不受 root 影响-->
<logger name="com.frxs.logproject.service">
<level value="debug" />
<!-- appender-ref 可选节点。作用:指定日志输出某个appender,如果没有指定,则不输出。 -->
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</logger>
</configuration>
日志使用
package com.suromo.springdemo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringdemoApplication {
private static final Logger logger = LoggerFactory.getLogger(SpringdemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(SpringdemoApplication.class, args);
logger.error("Hello, this is a line of log message logged by Logback hahahah");
}
}