亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot+logback默認(rèn)日志的配置和使用方式

 更新時(shí)間:2024年05月14日 16:25:29   作者:螞蟻舞  
這篇文章主要介紹了SpringBoot+logback默認(rèn)日志的配置和使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot+logback默認(rèn)日志的配置和使用

記錄一下SpringBoot2.0.x使用默認(rèn)logback日志的配置和常見(jiàn)使用

SpringBoot的默認(rèn)日志是logback,在SpringBoot2.0.x版本中使用logback很方便而且內(nèi)存開銷小,速度快,還不需要去單獨(dú)的配置maven的jar包,因?yàn)橐呀?jīng)集成整合了的。

作為專門寫代碼來(lái)應(yīng)用的,不需要知道logback到底怎么實(shí)現(xiàn)的,什么底層,什么抽象層,反正用SpringBoot默認(rèn)的就對(duì)了,有特殊要求使用其他的 ,查找博客就能解決導(dǎo)包這些問(wèn)題。

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.5.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

從這里點(diǎn)進(jìn)去

<!--web模塊的啟動(dòng)器 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

可以看到這個(gè)starter 繼續(xù)點(diǎn)進(jìn)去查看

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.0.5.RELEASE</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
  <version>2.0.5.RELEASE</version>
  <scope>compile</scope>
</dependency>

myw

配置文件的位置

在項(xiàng)目的/src/main/resources目錄下,新建logback的默認(rèn)日志配置文件logback-spring.xml(配置默認(rèn)就能生效)

myw

注意:當(dāng)然也可以直接logback.xml直接測(cè)試也是能生效的

如果說(shuō)我不喜歡他的默認(rèn)文件名 我非要自定義呢?

自定義配置文件名 myw-logback-test.xml

單獨(dú)加一個(gè)配置在application.properties

#配置文件
logging.config=classpath:myw-logback-test.xml

myw

配置文件內(nèi)容

logback的配置文件內(nèi)容 這個(gè)還真的逐字逐句的了解其真意,這對(duì)使用來(lái)說(shuō)特別有用的,最常用的文件類型格式如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
	
	<!--不設(shè)置的話默認(rèn)名稱是default,contextName標(biāo)簽?zāi)茉O(shè)置成其他名稱,用于區(qū)分不同程序應(yīng)用-->
    <contextName>spring-boot-logging-myw</contextName>
    
    <!--配置日志文件的輸出路徑-->
    <property name="log.path" value="myw-log/" />  
    
    <!--輸出到控制臺(tái)或者文件-->
    <appender name="xxxxxx" class="ch.qos.logback.core.xxxxxxxxx">
    	<!--內(nèi)容-->
    </appender>
    
	<!-- 用來(lái)設(shè)置某一個(gè)包或者具體的某一個(gè)類的日志打印 -->
	<logger level="xxxx" name="xxxxx">
		<!--內(nèi)容-->
	</logger>

    <!--指定基礎(chǔ)控制臺(tái)的日志輸出級(jí)別,level屬性指定級(jí)別 必須配置的-->
    <root level="xxx">
    	<!--內(nèi)容-->
    </root>

</configuration>

configuration標(biāo)簽

  • scan=“true” scan屬性默認(rèn)就是true 意思是說(shuō)配置文件發(fā)生改變后,將會(huì)重新加載,默認(rèn)值為true 實(shí)際使用默認(rèn)就可以。
  • scanPeriod=“60 seconds” 這個(gè)是設(shè)置檢測(cè)配置文件是否修改的時(shí)間間隔,時(shí)間單位默認(rèn)是毫秒,默認(rèn)1分鐘,但是給了秒的單位后就是秒,一般大家都是是60 seconds這樣配置。
  • debug=“false” 這個(gè)屬性默認(rèn)是false 如果需要查看logback內(nèi)部日志,可以設(shè)置為true時(shí),這樣可以實(shí)時(shí)查看logback運(yùn)行狀態(tài)數(shù)據(jù),實(shí)際上沒(méi)用過(guò)也沒(méi)測(cè)試過(guò) 不關(guān)心這個(gè)點(diǎn)兒。

contextName標(biāo)簽

這個(gè)標(biāo)簽?zāi)J(rèn)名字是default 如果需要可以改成其他名字,一般沒(méi)用

<!--不設(shè)置的話默認(rèn)名稱是default,contextName標(biāo)簽?zāi)茉O(shè)置成其他名稱,用于區(qū)分不同程序應(yīng)用-->
<contextName>spring-boot-logging-myw</contextName>

在idea的控制臺(tái)會(huì)顯示設(shè)置的名稱

myw

但是在log日志文件里沒(méi)有這個(gè)屬性值

myw

property標(biāo)簽

用法是在當(dāng)前根目錄下創(chuàng)建日志文件夾

<!-- 當(dāng)前根目錄下創(chuàng)建路徑 -->
<property name="log.path" value="myw-log/" />

也可以使用絕對(duì)路徑 在linux中用絕對(duì)路徑反而更美,一般放在linux的data目錄下面,這樣不管是直接啟動(dòng)還是使用腳本啟動(dòng)還是服務(wù)方式開機(jī)啟動(dòng) 都在data下面 當(dāng)然也可以用相對(duì)路徑 但是在加了開機(jī)啟動(dòng)service方式可能日志路徑在/根目錄下面。

<property name="log.path" value="/data/myw-log/" />

在項(xiàng)目中運(yùn)行的話這個(gè)日志文件在

myw

appender標(biāo)簽

<!--輸出到文件-->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${log.path}/log_info.log</file>
    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/sys_log-info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

appender標(biāo)簽的name和class name可以根據(jù)需要定義 class就給ch.qos.logback.core.rolling.RollingFileAppender搞定,滾動(dòng)記錄文件,目的是當(dāng)符合某個(gè)條件時(shí),將日志記錄到特殊的日志文件,其他方式也有,具體調(diào)整具體配置,寫入文件用這個(gè)就夠了,無(wú)需多學(xué)。 

file標(biāo)簽用來(lái)定義文件名字,encoder標(biāo)簽用來(lái)定義日志記錄格式和編碼的,沒(méi)啥好說(shuō)的。 

rollingPolicy標(biāo)簽,用來(lái)移動(dòng)和重命名日志文件的,使用class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"就可以了,里面的標(biāo)簽有配置日志保存天數(shù) 日志文件大小等,也都直接用,要對(duì)日志的配置研究深入再說(shuō)吧。

filter標(biāo)簽,class屬性有臨界值過(guò)濾和級(jí)別過(guò)濾

class=“ch.qos.logback.classic.filter.LevelFilter”

根據(jù)日志級(jí)別進(jìn)行過(guò)濾,如果日志級(jí)別等于配置級(jí)別,過(guò)濾器會(huì)根據(jù)onMath(用于配置符合過(guò)濾條件的操作) 和 onMismatch(用于配置不符合過(guò)濾條件的操作)接收或拒絕日志,一般用這種。

 <!-- 級(jí)別過(guò)濾 -->
 <filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>INFO</level>
     <onMatch>ACCEPT</onMatch>
     <onMismatch>DENY</onMismatch>
 </filter>
class=“ch.qos.logback.classic.filter.ThresholdFilter”

過(guò)濾掉低于指定臨界值的日志,當(dāng)日志級(jí)別等于或高于臨界值時(shí),過(guò)濾器返回NEUTRAL;當(dāng)日志級(jí)別低于臨界值時(shí),日志會(huì)被拒絕。

<!-- 級(jí)別過(guò)濾 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>INFO</level>
</filter>
  • DENY:日志將立即被拋棄不再經(jīng)過(guò)其他過(guò)濾器。
  • NEUTRAL:有序列表里的下個(gè)過(guò)濾器過(guò)接著處理日志。
  • ACCEPT:日志會(huì)被立即處理,不再經(jīng)過(guò)剩余過(guò)濾器。

日志級(jí)別

日志級(jí)別從低到高分為 TRACE < DEBUG < INFO < WARN < ERROR < FATAL 

TRACE 和 FATAL 忽略 那么只關(guān)心日志級(jí)別 DEBUG < INFO < WARN < ERROR

那么我需要把debug info warn error分開寫入不同的文件的配置

<!--輸出到文件-->
<appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${log.path}/log_debug.log</file>
    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/sys_log-debug-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>DEBUG</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!--輸出到文件-->
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${log.path}/log_error.log</file>
    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/sys_log-error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!--輸出到文件-->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${log.path}/log_info.log</file>
    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/sys_log-info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!--輸出到文件-->
<appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${log.path}/log_warn.log</file>
    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/sys_log-warn-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>WARN</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>
    

我們?cè)陂_發(fā)的時(shí)候 控制臺(tái)也是需要打印日志的,因此需要配置

<!--輸出到控制臺(tái)-->
<appender name="console_debug" class="ch.qos.logback.core.ConsoleAppender">
	
	<!--日志輸出格式 -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>
   
    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>DEBUG</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>

</appender>

<!--輸出到控制臺(tái)-->
<appender name="console_info" class="ch.qos.logback.core.ConsoleAppender">

    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>

    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>

</appender>

<!--輸出到控制臺(tái)-->
<appender name="console_warn" class="ch.qos.logback.core.ConsoleAppender">

    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>

    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>WARN</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>

</appender>

<!--輸出到控制臺(tái)-->
<appender name="console_error" class="ch.qos.logback.core.ConsoleAppender">

    <!--日志輸出格式 -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
    </encoder>

    <!-- 級(jí)別過(guò)濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>

</appender>

root標(biāo)簽

用來(lái)指定控制臺(tái)的輸出級(jí)別和記錄日志的級(jí)別,一般使用info級(jí)別

 <root level="debug">
 	<appender-ref ref="file_debug" />
 	<appender-ref ref="file_info" />
 	<appender-ref ref="file_warn" />
     <appender-ref ref="file_error" />
     <appender-ref ref="console_debug" />
     <appender-ref ref="console_info" />
     <appender-ref ref="console_warn" />
     <appender-ref ref="console_error" />
 </root>

寫一個(gè)控制層LogBackController

package boot.example.logback.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value="/logback")
public class LogBackController {
	
	private final Logger log =  LoggerFactory.getLogger(this.getClass());
	
	@RequestMapping(value="/hello")
	public String hello() {
		System.out.println("System.out.println 打印");
		log.info("log info 日志");
		log.error("log error 日志");
		log.warn("log warn 日志");
		log.debug("log debug 日志");

		return "hello world";
	}
}

root標(biāo)簽的level屬性設(shè)置debug

啟動(dòng)的時(shí)候控制臺(tái)會(huì)顯示很多信息,然后訪問(wèn)接口可以看到四種級(jí)別的日志都有,甚至還有調(diào)試日志

myw

在查看file文件的日志

myw

root標(biāo)簽的level屬性設(shè)置info

設(shè)置info后可以看到debug日志沒(méi)有了,相對(duì)來(lái)說(shuō)好的多了 info也是推薦的設(shè)置,因?yàn)樗茱@示info warn和error的日志數(shù)據(jù)

控制臺(tái) -已經(jīng)沒(méi)有了debug的數(shù)據(jù)

myw

文件的日志

myw

myw

root標(biāo)簽的level屬性設(shè)置warn

控制臺(tái) 只有error和warn 至于上面的debug是main的 無(wú)需關(guān)心

myw

文件日志

myw

myw

至于error 不測(cè)試了

完整的logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">

    <!--不設(shè)置的話默認(rèn)名稱是default,contextName標(biāo)簽?zāi)茉O(shè)置成其他名稱,用于區(qū)分不同程序應(yīng)用-->
    <contextName>spring-boot-logging-myw</contextName>

    <!-- 當(dāng)前根目錄下創(chuàng)建路徑 -->
    <property name="log.path" value="myw-log/" />
    
    <!--輸出到控制臺(tái)-->
    <appender name="console_debug" class="ch.qos.logback.core.ConsoleAppender">
    	
    	<!--日志輸出格式 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
       
        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

    </appender>

    <!--輸出到控制臺(tái)-->
    <appender name="console_info" class="ch.qos.logback.core.ConsoleAppender">

        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>

        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

    </appender>

    <!--輸出到控制臺(tái)-->
    <appender name="console_warn" class="ch.qos.logback.core.ConsoleAppender">

        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>

        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

    </appender>

    <!--輸出到控制臺(tái)-->
    <appender name="console_error" class="ch.qos.logback.core.ConsoleAppender">

        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>

        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

    </appender>

    <!--輸出到文件-->
    <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${log.path}/log_debug.log</file>
        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sys_log-debug-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--輸出到文件-->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${log.path}/log_info.log</file>
        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sys_log-info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    
    <!--輸出到文件-->
    <appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${log.path}/log_warn.log</file>
        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sys_log-warn-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--輸出到文件-->
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${log.path}/log_error.log</file>
        <!--日志輸出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sys_log-error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過(guò)50M,若超過(guò)50M,日志文件會(huì)以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <!-- 級(jí)別過(guò)濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <root level="info">
    	<appender-ref ref="file_debug" />
    	<appender-ref ref="file_info" />
    	<appender-ref ref="file_warn" />
        <appender-ref ref="file_error" />
        <appender-ref ref="console_debug" />
        <appender-ref ref="console_info" />
        <appender-ref ref="console_warn" />
        <appender-ref ref="console_error" />
    </root>

</configuration>

在java中最簡(jiǎn)單的使用

private final Logger log =  LoggerFactory.getLogger(this.getClass());

在靜態(tài)類里面

package boot.example.logback.controller;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class StaticUtils {
    public static final Logger log =  LoggerFactory.getLogger(StaticUtils.class);

    public static void testLog(){
        log.info("log info");
    }
}

還可以借助lombok

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>RELEASE</version>
	<scope>compile</scope>
</dependency>
package boot.example.logback.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@Slf4j
@RestController
@RequestMapping(value="/logback")
public class LogBackController2 {

	@RequestMapping(value="/hello2")
	public String hello() {
		System.out.println("System.out.println2 打印");
		log.info("log info2 日志");
		log.error("log error2 日志");
		log.warn("log warn2 日志");
		log.debug("log debug2 日志");

		StaticUtils2.testLog();

		return "hello world";
	}


}

package boot.example.logback.controller;


import lombok.extern.slf4j.Slf4j;

@Slf4j
public class StaticUtils2 {

    public static void testLog(){
        log.info("log info");
    }
}

至于logback里的其他標(biāo)簽 不是真正的剛需就不需要去花時(shí)間記錄了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論