天天看點

logback.xml檔案解析

項目中使用了logback.xml配置,

具體詳細解釋可以看如下解釋:

<?xml version="1.0" encoding="UTF-8" ?>

	<!--1、根節點<configuration>,包含下面三個屬性:-->
	<!--scan: 當此屬性設定為true時,配置檔案如果發生改變,将會被重新加載,預設值為true。-->
	<!--scanPeriod: 設定監測配置檔案是否有修改的時間間隔,如果沒有給出時間機關,預設機關是毫秒。當scan為true時,此屬性生效。預設的時間間隔為1分鐘。-->
	<!--debug: 當此屬性設定為true時,将列印出logback内部日志資訊,實時檢視logback運作狀态。預設值為false。-->
<configuration scan="true" scanPeriod="30 seconds">
	<!--子節點<property>:用來定義變量值,它有兩個屬性name和value,通過<property>定義的值會被插入到logger上下文中,可以使“${}”來使用變量。-->
	<!--name: 變量的名稱-->
	<!--value: 的值時變量定義的值-->
	<property name="z_app" value="app"/>

	<property name="SQL_LEVEL" value="INFO"/>
	<property name="SERVICE_LEVEL" value="ERROR"/>
	<property name="RPC_LEVEL" value="ERROR"/>
	<property name="BOOT_LEVEL" value="DEBUG"/>
	<property name="BUF_LEVEL" value="DEBUG"/>

	<property name="SQL_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}Sql.log"/>
	<property name="SERVICE_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}Service.log"/>
	<property name="RPC_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}RPC.log"/>
	<property name="BOOT_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}Boot.log"/>
	<property name="BUF_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}Buf.log"/>
	<property name="TRACE_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}Trace.log"/>

	<include resource="log/logback-base.xml" />

	<property name="ROOT_LEVEL" value="INFO"/>

	<property name="APP_LOG_FILE" value="${ZSMART_HOME}/logs/${z_app}/${z_app}.log"/>
	<!--5、子節點<appender>:負責寫日志的元件,它有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名-->
	<appender name="APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!--<encoder>:對日志進行格式化。(具體參數稍後講解 )-->
		<encoder>
			<charset>utf-8</charset>
			<pattern>${PATTERN}</pattern>
		</encoder>
		<!--<prudent>:如果是 true,日志會被安全的寫入檔案,即使其他的FileAppender也在向此檔案做寫入操作,效率低,預設是 false。-->
		<prudent>false</prudent>
		<!--<append>:如果是 true,日志被追加到檔案結尾,如果是 false,清空現存檔案,預設是true。-->
		<append>true</append>
		<!--<file>:被寫入的檔案名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動建立,沒有預設值。-->
		<file>${APP_LOG_FILE}</file>
		<!--<rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及檔案移動和重命名。屬性class定義具體的滾動政策類-->
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!--<fileNamePattern>:必要節點,包含檔案名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。-->
			<fileNamePattern>${APP_LOG_FILE}.%d{yyyy-MM-dd}-%i.gz</fileNamePattern>
			<!--<maxFileSize>:這是活動檔案的大小,預設值是10MB。-->
			<maxFileSize>10MB</maxFileSize>
			<!--可選節點,控制保留的歸檔檔案的最大數量,超出數量就删除舊檔案。假設設定每個月滾動,且<maxHistory>是6,則隻儲存最近6個月的檔案,删除之前的舊檔案。注意,删除舊檔案是,那些為了歸檔而建立的目錄也會被删除。-->
			<maxHistory>15</maxHistory>
			<totalSizeCap>200MB</totalSizeCap>
		</rollingPolicy>
	</appender>
	<!--子節點<loger>:用來設定某一個包或具體的某一個類的日志列印級别、以及指定<appender>。<loger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。-->
	<logger name="com.ztesoft.zsmart.core.security.data.jackson.ObjectMapperProvider" level="info"/>
	<!--子節點<root>:它也是<loger>元素,但是它是根loger,是所有<loger>的上級。隻有一個level屬性,因為name已經被命名為"root",且已經是最上級了。-->
	<!--level: 用來設定列印級别,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,不能設定為INHERITED或者同義詞NULL。 預設是DEBUG。-->
	<!--root 的日志級别配置的為 info,但是卻輸出 debug 級别的日志資訊,是以從測試結果可以看出,向上傳遞的日志資訊的日志級别将由最底層的子元素決定(最初傳遞資訊的 logger),因為子元素設定的日志級别為 debug,是以也輸出了 debug 級别的資訊。-->
	<root level="${ROOT_LEVEL}">
		<!-- <appender-ref ref="APP_LOG" /> -->
		<appender-ref ref="CONSOLE" />
	</root>
</configuration>
           

參考:https://blog.csdn.net/hellolovelife/article/details/78230177