天天看點

log4j的使用log4j

log4j

log4j是通過使用Log4j,我們可以控制日志資訊輸送,以及生成解析。等相關操作。
           

log4j三個重要組成部分

1.Logger(日志記錄器)
控制要啟用或禁用哪些日志記錄語句,并對日志資訊進行級别限制
           
2.Appenders(輸出端)
指定了日志将輸出列印的位置
           
3.Layout(日志格式化器)
控制日志資訊的顯示格式
           

Logger

Logger 負責處理日志記錄的大部分操作。
其文法為:
log4j.rootLogger = [level] , appenderName, appenderName, …
           

level是日志記錄的優先級;

A:off 最高等級,用于關閉所有日志記錄。

B:fatal 指出每個嚴重的錯誤事件将會導緻應用程式的退出。

C: error 指出雖然發生錯誤事件,但仍然不影響系統的繼續運作。

D: warm 表明會出現潛在的錯誤情形。

E: info 一般和在粗粒度級别上,強調應用程式的運作全程。

F: debug 一般用于細粒度級别上,對調試應用程式非常有幫助。

G: all 最低等級,用于打開所有日志記錄。

Log4j建議隻使用四個級别,優先級從高到低分别是ERROR(error)、WARN(warn)、INFO(info)、DEBUG(debug)。

通過在這裡定義的級别,您可以控制到應用程式中相應級别的日志資訊的開關。

eg:比如在這裡定義了INFO級别,隻有等于及高于這個級别的才進行處理,則應用程式中所有DEBUG級别的日志資訊将不被列印出來。

package log4j;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class Log4jTest {

    public static void main(String[] args) {

        Logger logger = Logger.getLogger(Log4jTest.class);

        //使用預設的配置資訊,不需要寫log4j.properties
        BasicConfigurator.configure();
        //設定日志輸出級别為info,這将覆寫配置檔案中設定的級别
        logger.setLevel(Level.INFO);
        //下面的消息将被輸出
        logger.info("this is an info");
        logger.warn("this is a warn");
        logger.error("this is an error");
        logger.fatal("this is a fatal");

    }

}
           

appenderName就是指定日志資訊輸出到哪個地方。可同時指定多個輸出目的地。

rootLogger(根Logger)是所有Logger的祖先,它有如下屬性:

**1.它總是存在的。

2.它不可以通過名字獲得。**

它可以通過下面兩條代碼獲得rootLogger:

public static Logger Logger.getRootLogger();
//一般常用第二種
public static Logger Logger.getLogger(Class clazz)
           

Appender

  • Appender用來指定日志資訊輸出到哪個地方,可以同時指定多個輸出目的地。
  • Log4j允許将資訊輸出到許多不同的輸出裝置中,一個log資訊輸出目的地就叫做一個Appender。
  • 每個Logger都可以擁有一個或多個Appender,
  • 每個Appender表示一個日志的輸出目的地。
  • 可以使用Logger.addAppender(Appender app)為Logger增加一個Appender。

以下為Log4j幾種常用的輸出目的地。

a:org.apache.log4j.ConsoleAppender:将日志資訊輸出到控制台。

b:org.apache.log4j.FileAppender:将日志資訊輸出到一個檔案。

c:org.apache.log4j.DailyRollingFileAppender:将日志資訊輸出到一個日志檔案,并且每天輸出到一個新的日志檔案。

d:org.apache.log4j.RollingFileAppender:将日志資訊輸出到一個日志檔案,并且指定檔案的尺寸,當檔案大小 達到指定尺寸時,會自動把檔案改名,同時産生一個新的檔案。

e:org.apache.log4j.WriteAppender:将日志資訊以流格式發送到任意指定地方。

f:org.apache.log4j.jdbc.JDBCAppender:通過JDBC把日志資訊輸出到資料庫中。

DailyRollingFileAppender

特點是固定周期時間生成一個日志檔案,比如,

預設情況是每天生成一個檔案。這種日志可以友善根據時間來定位日志位置,

使日志清晰易查。但是這種日志有個不好地方是,不能限制日志數量

layout.ConversionPattern

%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息

%n(new line):換行

%d(datetime):輸出目前語句運作的時刻

%r(run time):輸出程式從運作到執行到目前語句時消耗的毫秒數

%t(thread id):目前語句所在的線程ID

%p(priority): 日志的目前優先級别,即DEBUG、INFO、WARN…等

%c(class):目前日志對象的名稱,例如: 模式字元串為:%-10c -%m%n

%-5p的意思是日志級别輸出左對齊,右邊以空格填充,%5p的意思是日志級别輸出右對齊,左邊以空格填充,

繼續閱讀