一、此處主要介紹在springboot工程下如何使用 logback + slf4j 進行日誌記錄。 logback主要包含三個組成部分:Loggers(日誌記錄器)、Appenders(輸出目的在)、Layouts(日誌輸出格式) slf4j :如jdbc一樣,定義了一套介面,是一個日誌門面,可實 ...
一、此處主要介紹在springboot工程下如何使用 logback + slf4j 進行日誌記錄。
logback主要包含三個組成部分:Loggers(日誌記錄器)、Appenders(輸出目的在)、Layouts(日誌輸出格式)
slf4j :如jdbc一樣,定義了一套介面,是一個日誌門面,可實現多個日誌系統間快速切換(通過修改配置文件)
logback : 和log4j是同一作者,是log4j的升級版,效果可想而知.
logback 主要分為三個模塊,分別是:
logback-core:提供基礎功能,是其他兩個模塊的基礎
logback-classic : log4j的升級,實現了self4j api
logback-access:用於與sevlet容器進行集成、提供網路訪問日誌的功能
二、初級日誌門面SLF4j和日誌實現Logback的使用
第一步使用springboot框架建立maven工程:
第二步在springboot框架的Maven工程中導入依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
第三步在test/java/com/imooc/新建LoggerTest.java
第一種使用:
private final Logger logger= LoggerFactory.getLogger(LoggerTest.class);
@RunWith(SpringRunner.class) @SpringBootTest public class LoggerTest { private final Logger logger= LoggerFactory.getLogger(LoggerTest.class); @Test public void test1(){ logger.error("error..."); logger.info("info..."); logger.debug("debug..."); } }
日誌輸出級別:數字越大,級別越高,優先輸出
第二種使用:
@Slf4j
@RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class LoggerTest { @Test public void test1(){ String name="yemeng"; String password="123"; log.info("name:{}, password:{}",name,password); log.error("error"); } }
三、使用配置文件
1.application.yml
spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: 123456 url: jdbc:mysql://192.168.1.110/sell?characterEncoding=utf-8&useSSL=false jpa: show-sql: true #項目路徑 server: context-path: /sell ##日誌 logging: #格式 pattern: #日期+信息+換行 console: "%d -%msg%n" #path: /var/log/tomcat/sell.log #日誌存儲路徑 file: /var/log/tomcat/sell.log #等級 level: #debug com.imooc.LoggerTest:debug
2.logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> %msg%n </pattern> </layout> </appender> <!-- 輸出info日誌文件--> <appender name="fileInfoLog" 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> %msg%n </pattern> </encoder> <!-- 滾動的策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 路徑--> <fileNamePattern>var/log/tomcat/info.%d.log</fileNamePattern> </rollingPolicy> </appender> <!-- 輸出error日誌文件--> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--過濾策略--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--滾動的策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 路徑--> <fileNamePattern>var/log/tomcat/error.%d.log</fileNamePattern> </rollingPolicy> </appender> <root level="info"> <appender-ref ref="consoleLog"/> <appender-ref ref="fileInfoLog"/> <appender-ref ref="fileErrorLog"/> </root> </configuration>