您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)log4j2.xml中如何配置 logback ,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="off"> <Properties> <Property name="LOG_HOME">E:/logs</Property> <Property name="LOG_NAME">shou</Property> <Property name="LOG_PATTERN">%d|1771|shou||%p||%c|%m|%t||||%ex%n</Property> </Properties> <Appenders> <!--commented by ysma RFC5424是日志輸出格式,通常會涉及日志服務(wù)器中template的配置 <Syslog name="LBSYSLOG" format="RFC5424" host="10.40.16.62" port="515" protocol="TCP" appName="shou1771" messageId="shou" facility="LOCAL2" newLine="true" mdcId="mdc" includeMDC="true" newLineEscape="#NewLine#" exceptionPattern="%ex" immediateFlush="false" connectTimeoutMillis="3000" reconnectionDelayMillis="3000"> <LoggerFields> <KeyValuePair key="syslogk1" value="%l"/> <KeyValuePair key="syslogk2" value="%X{syslogk2}"/> <KeyValuePair key="syslogk3" value="%X{syslogk3}"/> <KeyValuePair key="syslogk4" value="%X{syslogk4}"/> <KeyValuePair key="syslogk5" value="%X{syslogk5}"/> </LoggerFields> </Syslog>--> <!--打印日志到控制臺--> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${LOG_PATTERN}"/> </Console> <!-- DEBUG日志格式 RollingFile 滾動日志的配置 filePattern需要%i 的關(guān)鍵字和 yyyy-MM-dd的格式 這樣 DefaultRolloverStrategy 才能有效按天刪除過期日志文件--> <RollingFile name="shou_debug_appender" fileName="${LOG_HOME}/${LOG_NAME}-debug.log" filePattern="${LOG_HOME}/${LOG_NAME}-debug.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <!-- 控制輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) --> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <!--interval,表示多久滾動一次。默認(rèn)是1 hour。modulate=true用來調(diào)整時間:比如現(xiàn)在是早上3am,interval是4,那么第一次滾動是在4am,接著是8am,12am...而不是7am 是基于時間的滾動 rollover--> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <!--日志文件最大的大小 是基于大小的滾動 即超過500m就滾動一次日志--> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <DefaultRolloverStrategy max="7"/> </RollingFile> <!-- INFO日志格式 --> <RollingFile name="shou_info_appender" fileName="${LOG_HOME}/${LOG_NAME}-info.log" filePattern="${LOG_HOME}/${LOG_NAME}-info.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <!--保留7天的日志 默認(rèn)也是保留7天--> <DefaultRolloverStrategy max="7"/> </RollingFile> <!-- ERROR日志格式 --> <RollingFile name="shou_error_appender" fileName="${LOG_HOME}/${LOG_NAME}-error.log" filePattern="${LOG_HOME}/${LOG_NAME}-error.log.%d{yyyy-MM-dd}-%i.gz" append="true" immediateFlush="true"> <Filters> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout> <pattern>${LOG_PATTERN}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="500 MB"/> </Policies> <DefaultRolloverStrategy max="7"/> </RollingFile> </Appenders> <Loggers> <!-- 配置日志的根節(jié)點 Logger中沒有明確指定輸出路徑的都會進(jìn)入到root中依據(jù)level進(jìn)行輸出--> <Root level="INFO"> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender" /> </Root> <!-- 第三方日志系統(tǒng) additivity=false標(biāo)識不走root模式輸出日志, AppenderRef 指定了輸出路徑--> <Logger name="com.esup" level="DEBUG" additivity="false"> <AppenderRef ref="shou_debug_appender"/> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender"/> </Logger> <Logger name="com.shou" level="DEBUG" additivity="false"> <AppenderRef ref="shou_debug_appender"/> <AppenderRef ref="shou_info_appender"/> <AppenderRef ref="shou_error_appender"/> </Logger> </Loggers> </Configuration>
logback配置樣例
<?xml version="1.0" encoding="UTF-8"?> <!-- scan:當(dāng)此屬性設(shè)置為true時,配置文件如果發(fā)生改變,將會被重新加載,默認(rèn)值為true。 scanPeriod:設(shè)置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認(rèn)單位是毫秒當(dāng)scan為true時,此屬性生效。默認(rèn)的時間間隔為1分鐘。 debug:當(dāng)此屬性設(shè)置為true時,將打印出logback內(nèi)部日志信息,實時查看logback運行狀態(tài)。默認(rèn)值為false。 --> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <!-- 定義日志的根目錄 --> <property name="LOG_HOME" value="/home/lbyw/logs" /> <!-- 定義日志文件名稱(項目應(yīng)用名稱) --> <property name="appName" value="butt-service"/> <!-- 定義當(dāng)前項目所屬項目部門 --> <property name="projectDept" value="1771"/> <!-- ch.qos.logback.core.ConsoleAppender 表示控制臺輸出 --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!-- <pattern>%date [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %m%n</pattern> --> <pattern>%date|${projectDept}|${appName}|%X{logType}|%level|%X{traceId}|%logger|%message|%thread|%X{col2}|%X{col3}|%X{col4}|%exception%n</pattern> </layout> </appender> <!-- 滾動記錄文件,先將日志記錄到指定文件,當(dāng)符合某個條件時,將日志記錄到其他文件 --> <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 指定日志文件的名稱 --> <file>${LOG_HOME}/${appName}.log</file> <!-- 當(dāng)發(fā)生滾動時,決定 RollingFileAppender 的行為,涉及文件移動和重命名 TimeBasedRollingPolicy: 最常用的滾動策略,它根據(jù)時間來制定滾動策略,既負(fù)責(zé)滾動也負(fù)責(zé)出發(fā)滾動。 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 滾動時產(chǎn)生的文件的存放位置及文件名稱 %d{yyyy-MM-dd}:按天進(jìn)行日志滾動 %i:當(dāng)文件大小超過maxFileSize時,按照i進(jìn)行文件滾動 --> <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern> <!-- 可選節(jié)點,控制保留的歸檔文件的最大數(shù)量,超出數(shù)量就刪除舊文件。假設(shè)設(shè)置每天滾動, 且maxHistory是365,則只保存最近365天的文件,刪除之前的舊文件。注意,刪除舊文件是, 那些為了歸檔而創(chuàng)建的目錄也會被刪除。 --> <MaxHistory>365</MaxHistory> <!-- 當(dāng)日志文件超過maxFileSize指定的大小是,根據(jù)上面提到的%i進(jìn)行日志文件滾動 注意此處配置SizeBasedTriggeringPolicy是無法實現(xiàn)按文件大小進(jìn)行滾動的,必須配置timeBasedFileNamingAndTriggeringPolicy --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 日志輸出格式: timestamp|project|app|logtype|level|traceid|logger|msg|col1|col2|col3|col4|exception 說明: timestamp: 統(tǒng)一格式y(tǒng)yyy-MM-dd HH:mm:ss.SSS,如2018-08-20 00:00:01,095 project: 項目:1771/7881/uhaozu app: 具體應(yīng)用:www/order/intf logtype: 日志種類,自定義名稱,和col配合記錄自定義信息 traceid: 唯一線程號,invokeNO msg: log4j或logback輸出的正文 exception: JavaStack col1-col4:預(yù)留的4個字段,col1-col2是字符串,col3-col4是數(shù)字,內(nèi)容自定義; 特別說明: logtype和col字段結(jié)合,可滿足日志自定義的場景,前提是自己記住col的含義,如: 記錄用戶操作的耗時: logtype="useractiontime",col1=userid,col2="login",col3=0.5 記錄某個重要方法的耗時:logtype="methodtime", col1=方法名稱, col3=0.8 日志文件地址/home/lbyw/logs下 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%date|${projectDept}|${appName}|%X{logType}|%level|%X{traceId}|%logger|%message|%thread|%X{col2}|%X{col3}|%X{col4}|%exception%n</pattern> </layout> </appender> <!-- logger主要用于存放日志對象,也可以定義日志類型、級別 name:表示匹配的logger類型前綴,也就是包的前半部分 level:要記錄的日志級別,包括 TRACE < DEBUG < INFO < WARN < ERROR additivity:作用在于children-logger是否使用 rootLogger配置的appender進(jìn)行輸出, false:表示只用當(dāng)前l(fā)ogger的appender-ref,true: 表示當(dāng)前l(fā)ogger的appender-ref和rootLogger的appender-ref都有效 --> <!-- SpringBoot的高級Profile功能 --> <springProfile name="dev"> <!-- Butt service logger --> <logger name="com.liebao.butt" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> <!-- SQL logger --> <logger name="tk.mybatis.mapper.common.base" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> <!-- Spring framework web logger --> <logger name="org.springframework.web.servlet.DispatcherServlet" level="debug" additivity="false"> <appender-ref ref="stdout" /> </logger> </springProfile> <!-- root與logger是父子關(guān)系,沒有特別定義則默認(rèn)為root,任何一個類只會和一個logger對應(yīng), 要么是定義的logger,要么是root,判斷的關(guān)鍵在于找到這個logger,然后判斷這個logger的appender和level。 --> <root level="info"> <appender-ref ref="stdout" /> <appender-ref ref="appLogAppender" /> </root> </configuration>
上述就是小編為大家分享的log4j2.xml中如何配置 logback 了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。