1. 程式人生 > >log4j中Pattern佈局ConversionPattern詳解

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學習彙總—–配置詳解