后端技術(shù)棧之日志框架logback
- 框架介紹
- 框架引入
- 框架配置
- 框架使用
框架介紹
Logback是由log4j創(chuàng)始人設(shè)計的另一個開源日志組件,官方網(wǎng)站: http://logback.qos.ch。它當前分為下面下個模塊:
- logback-core:其它兩個模塊的基礎(chǔ)模塊
- logback-classic:它是log4j的一個改良版本,同時它完整實現(xiàn)了slf4j API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging
- logback-access:訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能
框架引入
spring boot本身已經(jīng)集成了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 必選節(jié)點。作用:日志輸出目的地, 配置后由 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 必選節(jié)點。作用:日志輸出目的地, 配置后由 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>
<!--日志文件保留天數(shù) -->
<MaxHistory>15</MaxHistory>
<!-- 每個日志文件大小,單位 kb、MB 等,這個功能控制不穩(wěn)定,因為打印日志速度太快,每個文件會變大。 -->
<maxFileSize>100kb</maxFileSize>
<!-- 日志總體積大小,超過了就會刪除前面的舊日志文件騰出空間,可以邊打印邊看結(jié)果 -->
<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必選節(jié)點:1.基礎(chǔ)的日志輸出級別配置,2.控制那些appender輸出 -->
<root level="INFO">
<!-- 注意:全部注釋了,那么不輸出日志了。 但是不影響 logger 標簽的配置輸出。 -->
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!-- logger可選節(jié)點:單獨配置某個"包"或者"某個類"下面的日志等級。 不受 root 影響-->
<logger name="com.frxs.logproject.service">
<level value="debug" />
<!-- appender-ref 可選節(jié)點。作用:指定日志輸出某個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");
}
}