欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

從這里點進去

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

可以看到這個starter 繼續(xù)點進去查看

<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

配置文件的位置

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

myw

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

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

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

單獨加一個配置在application.properties

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

myw

配置文件內(nèi)容

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

<?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/" />  
    
    <!--輸出到控制臺或者文件-->
    <appender name="xxxxxx" class="ch.qos.logback.core.xxxxxxxxx">
    	<!--內(nèi)容-->
    </appender>
    
	<!-- 用來設(shè)置某一個包或者具體的某一個類的日志打印 -->
	<logger level="xxxx" name="xxxxx">
		<!--內(nèi)容-->
	</logger>

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

</configuration>

configuration標(biāo)簽

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

contextName標(biāo)簽

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

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

在idea的控制臺會顯示設(shè)置的名稱

myw

但是在log日志文件里沒有這個屬性值

myw

property標(biāo)簽

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

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

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

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

在項目中運行的話這個日志文件在

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>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級別過濾 -->
    <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)符合某個條件時,將日志記錄到特殊的日志文件,其他方式也有,具體調(diào)整具體配置,寫入文件用這個就夠了,無需多學(xué)。 

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

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

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

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

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

 <!-- 級別過濾 -->
 <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”

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

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

日志級別

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

TRACE 和 FATAL 忽略 那么只關(guān)心日志級別 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>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級別過濾 -->
    <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>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級別過濾 -->
    <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>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級別過濾 -->
    <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>
        <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
			<maxFileSize>50MB</maxFileSize>
		</timeBasedFileNamingAndTriggeringPolicy>
        <!-- 日志保存周期  天數(shù)-->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    
    <!-- 級別過濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>WARN</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>
    

我們在開發(fā)的時候 控制臺也是需要打印日志的,因此需要配置

<!--輸出到控制臺-->
<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>
   
    <!-- 級別過濾 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>DEBUG</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>

</appender>

<!--輸出到控制臺-->
<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>

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

</appender>

<!--輸出到控制臺-->
<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>

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

</appender>

<!--輸出到控制臺-->
<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>

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

</appender>

root標(biāo)簽

用來指定控制臺的輸出級別和記錄日志的級別,一般使用info級別

 <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>

寫一個控制層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

啟動的時候控制臺會顯示很多信息,然后訪問接口可以看到四種級別的日志都有,甚至還有調(diào)試日志

myw

在查看file文件的日志

myw

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

設(shè)置info后可以看到debug日志沒有了,相對來說好的多了 info也是推薦的設(shè)置,因為他能顯示info warn和error的日志數(shù)據(jù)

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

myw

文件的日志

myw

myw

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

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

myw

文件日志

myw

myw

至于error 不測試了

完整的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/" />
    
    <!--輸出到控制臺-->
    <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>
       
        <!-- 級別過濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

    </appender>

    <!--輸出到控制臺-->
    <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>

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

    </appender>

    <!--輸出到控制臺-->
    <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>

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

    </appender>

    <!--輸出到控制臺-->
    <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>

        <!-- 級別過濾 -->
        <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>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級別過濾 -->
        <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>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級別過濾 -->
        <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>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        
        <!-- 級別過濾 -->
        <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>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過50M,若超過50M,日志文件會以索引0開始, 命名日志文件,例如xxx-2023-07-16.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保存周期  天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <!-- 級別過濾 -->
        <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中最簡單的使用

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)簽 不是真正的剛需就不需要去花時間記錄了。

總結(jié)

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

相關(guān)文章

最新評論