新日志框架LogBack介紹
1.常用處理java的日志組件 slf4j,log4j,logback,common-logging 等
2、logback介紹:基于Log4j基礎(chǔ)上大量改良弹谁,不能單獨(dú)使用瞳腌,推薦配合日志框架SLF4J來(lái)使用
logback當(dāng)前分成三個(gè)模塊:logback-core,logback-classic和logback-access;
logback-core是其它兩個(gè)模塊的基礎(chǔ)模塊
3娩井、Logback的核心對(duì)象:
Logger:日志記錄器
Appender:指定日志輸出的目的地芽隆,目的地可以是控制臺(tái)青自,文件
Layout:日志布局 格式化日志信息的輸出
4葫隙、日志級(jí)別:DEBUG < INFO < WARN < ERROR
log4j配置===========log4j示例===========
設(shè)置
log4j.rootLogger = debug,stdout,D,E
輸出信息到控制抬
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
輸出DEBUG 級(jí)別以上的日志到=D://logs/error.log
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
輸出ERROR 級(jí)別以上的日志到=D://logs/error.log
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
SpringBoot2.x日志講解和自定義Logback配置實(shí)戰(zhàn)
分析SpringBoot啟動(dòng)日志
默認(rèn)情況下栽烂,Spring Boot將日志輸出到控制臺(tái)
整合Logback實(shí)戰(zhàn)
-創(chuàng)建 日志文件logback-spring.xml,官方推薦 -spring.xml結(jié)尾
-默認(rèn)加載加載配置順序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
注釋:
<configuration> 子節(jié)點(diǎn)
<appender></appender>
<logger></logger>
<root></root>(要加在最后)
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</layout>
</appender>
<appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 滾動(dòng)策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路徑 -->
<fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 設(shè)置滾動(dòng)策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路徑 -->
<fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
<!-- 控制保留的歸檔文件的最大數(shù)量恋脚,超出數(shù)量就刪除舊文件腺办,假設(shè)設(shè)置每個(gè)月滾動(dòng), 且<maxHistory> 是1糟描,則只保存最近1個(gè)月的文件怀喉,刪除之前的舊文件 -->
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="consoleApp" />
<appender-ref ref="fileInfoApp" />
<appender-ref ref="fileErrorApp" />
</root>
</configuration>
文件位置位于resource目錄下
編寫controller 測(cè)試
package vip.buildup.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//封裝的消息返回
import vip.buildup.demo.domain.JsonData;
@RestController
@RequestMapping("/api/v2")
public class TestLogBackController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@GetMapping("test_log")
public Object testLog() {
logger.debug("this is debug level");
logger.info("this is debug level");
logger.warn("this is debug level");
logger.error("this is debug level");
return JsonData.buildSuccess();
}
}
測(cè)試接口后,刷新項(xiàng)目船响,項(xiàng)目路徑下 生成app_log目錄躬拢,目錄下生成日志文件。