log4j中Pattern佈局ConversionPattern詳解
spring使用log4j,可以有2種方法。
1、在web.xml裡不做任何配置。
log4j.properties放在classpath根目錄下,
這時候生成的日誌檔案就沒有相對路徑,如果寫相對路徑,則會生成在安裝tomcat的根路徑下。
2、在web.xml設定。
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>myappfuse.root</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
列印引數: Log4J採用類似C語言中的printf函式的列印格式格式化日誌資訊,如下:
%p: 輸出日誌資訊優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,
log4j.rootLogger = INFO,stdout 這句中的INFO是設定了輸出該級別以上的日誌
INFO,WARN,ERROR,FATAL等訊息都會輸出。哪到底每條訊息是哪個級別呢?%p就是輸出該條訊息的級別。
%d: 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2011-10-18 22:10:28,921
%r: 輸出自應用啟動到輸出該log資訊耗費的毫秒數
%c: 輸出日誌資訊所屬的類目,通常就是所在類的全名
%t: 輸出產生該日誌事件的執行緒名
%l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及在程式碼中的行數。
%x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。
%%: 輸出一個"%"字元
%F: 輸出日誌訊息產生時所在的檔名稱
%L: 輸出程式碼中的行號
%m: 輸出程式碼中指定的訊息,產生的日誌具體資訊
%n: 輸出一個回車換行符,Windows平臺為"\r\n",Unix平臺為"\n"輸出日誌資訊換行
可以在%與模式字元之間加上修飾符來控制其最小寬度
1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,預設的情況下右對齊。
2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。
3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格。
4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊交遠銷出的字元截掉
測試程式碼
import org.apache.log4j.Logger; public class HelloLog4j { private static Logger logger = Logger.getLogger(HelloLog4j.class); /** * @param args */ public static void main(String[] args) { // System.out.println("This is println message."); // 記錄debug級別的資訊 logger.debug("This is debug message."); // 記錄info級別的資訊 logger.info("This is info message."); // 記錄error級別的資訊 logger.error("This is error message."); } }
Log4j寫入資料庫詳解
Log4j學習彙總—–配置詳解