1、gradle 排除起步依賴中的logbackhtml
//排除全局依賴 configurations { compile.exclude module:'spring-boot-starter-logging' // all*.exclude group: 'org.gradle.test.excludes', module: 'reports' }
還有一種在部分排除java
// 添加起步依賴 implementation ('org.springframework.boot:spring-boot-starter-web'){ // 排除jar包依賴 // exclude module : 'spring-boot-starter-logging' }
2、新建配置文件,默認放在resource目錄下程序員
log4j2-XXXX.xmlweb
能夠指定配置文件位置:spring
logging.config=classpath:log4j2-spring.xml
3、修改配置文件apache
若是跟我同樣英文不是太好的,能夠看這篇博主(筱光)的博客https://blog.csdn.net/womeng2009/article/details/53510913app
爲了不博主哪天刪了,下面是一些拷貝和記錄spring-boot
log4j 用途與優勢:佈局
1. 將信息送到控制檯,文件,GUI組件等。
2. 控制每條信息的輸出格式。
3. 將信息分類,定義信息級別,細緻地控制日誌的輸出。
配置項:
1. 日誌級別
trace:追蹤,就是程序推動一下,能夠寫個trace輸出
debug:調試,通常做爲最低級別,trace基本不用。
info:輸出重要的信息,使用較多
warn:警告,有些信息不是錯誤信息,但也要給程序員一些提示。
error:錯誤信息。用的也不少。
fatal:致命錯誤。級別較高,這種級別不用調試了,重寫吧……
2. 輸出源
CONSOLE(輸出到控制檯)、FILE(輸出到文件)等。
3. 佈局方式
SimpleLayout:以簡單的形式顯示
HTMLLayout:以HTML表格顯示
PatternLayout:自定義形式顯示
在Log4J2中基本採用PatternLayout自定義日誌佈局。
自定義格式:
%t:線程名稱
%p:日誌級別
%c:日誌消息所在類名
%m:消息內容
%M:輸出執行方法
%d:發生時間,%d{yyyy-MM-dd HH:mm:ss,SSS},輸出相似:2011-10-18 22:10:28,921
%x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤爲用到像java servlets這樣的多客戶多線程的應用中。
%L:代碼中的行數
%n:換行
使用案例:
package com.log4j2; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class test { static Logger logger = LogManager.getLogger(test.class.getName()); public static boolean hello(){ logger.trace("entry"); //等同於logger.entry();但此方法在新版本好像已經廢棄 logger.error("Did it again!"); logger.info("這是info級信息"); logger.debug("這是debug級信息"); logger.warn("這是warn級信息"); logger.fatal("嚴重錯誤"); logger.trace("exit"); return false; } public static void main(String[] args) { logger.trace("開始主程序"); for(int i = 0; i < 10000; i++){ logger.info("當前i:"+i); if(!test.hello()){ logger.error("hello"); } } logger.trace("退出程序"); } }
簡單定義:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <!--添加一個控制檯追加器--> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout> <pattern>[%-5p] %d %c - %m%n</pattern> </PatternLayout> </Console> <!--添加一個文本追加器,文件位於根目錄下,名爲log.log--> <File name="File" fileName="log.log"> <PatternLayout> <pattern>[%-5p] %d %c - %m%n</pattern> </PatternLayout> </File> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console" /> </Root> <!--把org.springframework包下的全部日誌輸出到log文件,additivity="false"表示不輸出到控制檯--> <Logger name="org.springframework" level="info" additivity="false"> <AppenderRef ref="File" /> </Logger> </Loggers> </Configuration>
複雜配置:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error"> <!-- 先定義全部的appender --> <appenders> <!-- 這個輸出控制檯的配置 --> <Console name="Console" target="SYSTEM_OUT"> <!-- 控制檯只輸出level及以上級別的信息(onMatch),其餘的直接拒絕(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 這個都知道是輸出日誌的格式 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </Console> <!-- 文件會打印出全部信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用 --> <!-- append爲TRUE表示消息增長到指定文件中,false表示消息覆蓋指定的文件內容,默認值是true --> <File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!-- 添加過濾器ThresholdFilter,能夠有選擇的輸出某個級別以上的類別 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,不然直接拒絕 --> <File name="ERROR" fileName="logs/error.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!-- 這個會打印出全部的信息,每次大小超過size,則這size大小的日誌會自動存入按年份-月份創建的文件夾下面並進行壓縮,做爲存檔 --> <RollingFile name="RollingFile" fileName="logs/web.log" filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="2MB"/> </RollingFile> </appenders> <!-- 而後定義logger,只有定義了logger並引入的appender,appender纔會生效 --> <loggers> <!-- 創建一個默認的root的logger --> <root level="trace"> <appender-ref ref="RollingFile"/> <appender-ref ref="Console"/> <appender-ref ref="ERROR" /> <appender-ref ref="log"/> </root> </loggers> </configuration>