Maven項目配置logback
阿新 • • 發佈:2018-10-22
trace 配置 trigger batis 決定 移動 日誌記錄 off 控制臺輸出
首先,在pom.xml中加入maven依賴
<!-- log start --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-api.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>${logback.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <!-- log end -->
我使用的版本是
<slf4j-api.version>1.7.25</slf4j-api.version> <logback.version>1.1.7</logback.version>
接著,配置 logback.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 級別從高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL --> <!-- 日誌輸出規則 根據當前ROOT 級別,日誌輸出時,級別高於root默認的級別時 會輸出 --> <!-- 以下 每個配置的 filter 是過濾掉輸出文件裏面,會出現高級別文件,依然出現低級別的日誌信息,通過filter 過濾只記錄本級別的日誌 --> <!-- scan 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。 --> <!-- scanPeriod 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 --> <!-- debug 當此屬性設置為true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值為false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 子節點<property> :用來定義變量值,它有兩個屬性name和value,通過<property>定義的值會被插入到logger上下文中,可以使“${}”來使用變量。--> <property name="LOG_HOME" value="/export/Logs/youxi" /> <!--子節點<appender>:負責寫日誌的組件,它有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名--> <!-- ConsoleAppender 控制臺輸出日誌 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- 設置日誌輸出格式 --> <pattern>[%d{yyyy/MM/dd HH:mm:ss.SSS}][%p][%logger{0}:%L] %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <!-- RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件。有以下子節點:--> <!-- <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。--> <!-- <append>:如果是 true,日誌被追加到文件結尾,如果是 false,清空現存文件,默認是true。--> <!-- <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類--> <!-- class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有以下子節點:--> <!-- <fileNamePattern>:必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。--> <!--如果直接使用 %d,默認格式是 yyyy-MM-dd。RollingFileAppender的file字節點可有可無,通過設置file,可以為活動文件和歸檔文件指定不同位置,當前日誌總是記錄到file指定的文件(活動文件),活動文件的名字不會改變;--> <!--如果沒設置file,活動文件的名字會根據fileNamePattern 的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。--> <!-- <maxHistory>:--> <!--可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件。假設設置每個月滾動,且<maxHistory>是6,則只保存最近6個月的文件,刪除之前的舊文件。註意,刪除舊文件是,那些為了歸檔而創建的目錄也會被刪除。--> <!-- class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看當前活動文件的大小,如果超過指定大小會告知RollingFileAppender 觸發當前活動文件滾動。只有一個節點:--> <!-- <maxFileSize>:這是活動文件的大小,默認值是10MB。--> <!-- <prudent>:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。--> <!-- <triggeringPolicy >: 告知 RollingFileAppender 合適激活滾動。--> <!-- class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根據固定窗口算法重命名文件的滾動策略。有以下子節點:--> <!-- <minIndex>:窗口索引最小值--> <!-- <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置為12。--> <!-- <fileNamePattern>:必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還可以指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip--> <appender name="LogFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/youxi.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/youxi.log.%d{yyyy-MM-dd}</fileNamePattern> </rollingPolicy> <!-- <encoder>:對記錄事件進行格式化。負責兩件事,一是把日誌信息轉換成字節數組,二是把字節數組寫入到輸出流。--> <!-- PatternLayoutEncoder 是唯一有用的且默認的encoder ,有一個<pattern>節點,用來設置日誌的輸入格式。使用“%”加“轉換符”方式,如果要輸出“%”,則必須用“\”對“\%”進行轉義。--> <encoder> <pattern>%p %d{yyyy-MM-dd HH:mm:ss} %logger - %m%n</pattern> </encoder> </appender> <appender name="PokerMqListenerLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/mq/poker-mq.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/mq/poker-mq.log.%d{yyyy-MM-dd}</fileNamePattern> </rollingPolicy> <encoder> <pattern>%p %d{yyyy-MM-dd HH:mm:ss} %logger - %m%n</pattern> </encoder> </appender> <logger name="com.jd.station.soa.message.listener.PokerActivityInfoMqListener" level="INFO" additivity="false"> <appender-ref ref="PokerMqListenerLogFile"/> </logger> <logger name="jdbc.sqltiming" level="info"/> <logger name="com.ibatis" level="info" /> <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="info" /> <logger name="com.ibatis.common.jdbc.ScriptRunner" level="info" /> <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="info" /> <logger name="java.sql.Connection" level="info" /> <logger name="java.sql.Statement" level="info" /> <logger name="java.sql.PreparedStatement" level="info" /> <logger name="java.sql.ResultSet" level="info" /> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="LogFile" /> </root> </configuration>
詳細博客請參考
https://www.cnblogs.com/warking/p/5710303.html
Maven項目配置logback