一 配置 兩種情況,一是在Web Application 中,二是在一般的Application中。
1) 在Web Application 中使用log4j
第一步 配置log4j配置文件 ========================= # Set root logger level to DEBUG and its only appender to A1 #log4j中有五級logger #FATAL0 #ERROR3 #WARN4 #INFO6 #DEBUG7 log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. #log4j中Appender有幾層 #ConsoleAppender輸出到控制臺 log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout #輸出格式 具體查看log4j javadoc org.apache.log4j.PatternLayout #d 時間 .... log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
================================另外一種配置================================ log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller‘s file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n #R 輸出到文件 log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
第二步:寫啟動的Servlet
- import org.apache.log4j.PropertyConfigurator ;
- import org.apache.log4j.Logger ;
- import org.apache.log4j.Level ;
- public class InitServlet extends HttpServlet {
- public void init() {
- ServletContext sct = getServletContext();
- String prefix = sct.getRealPath("/");
- //log4j 配置文件存放目錄
- System.out.println("[....Log4j]: The Root Path: " + prefix);
- System.out.println("[....Log4j]: InitServlet init start...");
- String file = getInitParameter("log4j");
- //log4j 配置文件
- if (file != null) {
- PropertyConfigurator.configure(prefix + file);
- //根據(jù)配置初始化log4j
- }
-
- System.out.println("[....Log4j]: InitServlet Init Sucess...");
- }
- public void doGet(HttpServletRequest req, HttpServletResponse res) {
- }
- public void doPost(HttpServletRequest req, HttpServletResponse res) {
- }
- }
2) 在一般的IDE中使用log4j,因為使用log4j需要做一些初始化,在Web Application 中這一部分初始化是有AppServer 啟動是加載的。在IDE中,則我們在使用log4j 之前需要自己配置一下。 如下文件:
- public final class Lo4jTest {
- private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
- private static Logger log = Logger.getLogger(CLASS_NAME);
- //在Web Application 中下面的pattern是在log4j的配置文件中配置的。
- //現(xiàn)在我們手動配置
- private static String pattern="%-4r [%-t] [%p] [%c] [%x] - [%m]%n";
- private static String pattern2="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n";
- //設(shè)置輸出層
- //
- private static ConsoleAppender consAppender =
- new ConsoleAppender(
- new PatternLayout(pattern2));
- public static void main(String[] args) {
- //配置log4j
- BasicConfigurator.configure(consAppender);
- // void configure(Appender appender);
- // void configure();
- //配置時log4j提供了兩種方式
- //后一種比較簡單,輸出的信息不夠詳細
- //我們可以使用前一種輸出我們希望的格式
- log.debug("Log4j Debug.");
- log.error("Log4j Error.");
- log.info("Log4j Info.");
- log.fatal("Log4j Fatal.");
- }
- }
//使用pattern2上面的輸出結(jié)果如下 2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[DEBUG] Log4j Debug. 2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[ERROR] Log4j Error. 2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[INFO] Log4j Info. 2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[FATAL] Log4j Fatal. //假如我們使用pattern輸出如下: 0 [main] [DEBUG] [com.bingo.test.Lo4jTest] [] - [Log4j Debug.] 0 [main] [ERROR] [com.bingo.test.Lo4jTest] [] - [Log4j Error.] 0 [main] [INFO] [com.bingo.test.Lo4jTest] [] - [Log4j Info.] 0 [main] [FATAL] [com.bingo.test.Lo4jTest] [] - [Log4j Fatal.]
二 使用log4j 在實際使用過程中其實非常簡單
1:)如下定義log,在log4j1.2以前使用Category,log4j1.2以后使用Logger代替
- private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
- //log4j1.2
- private static Logger log = Logger.getLogger(CLASS_NAME);
- //lo4j1.2以前
- private static Category log =Category.getInstance(CLASS_NAME);
- //取得一個Category or Logger有幾種方式,根據(jù)自己需要使用
2:)寫日志
- log.debug("Log4j Debug.");
- log.error("Log4j Error.");
- log.info("Log4j Info.");
- log.fatal("Log4j Fatal.");
- //void debug(Object message)
- //Log a message object with the DEBUG level.
- //void debug(Object message, Throwable t)
- //Log a message object with the DEBUG level including the
- //stack trace of the Throwable t passed as parameter.
三:注意事項 1:在具體使用中注意不同的信息使用不同的log方式,選擇debug,error, info,fatal中的一種,以后可以根據(jù)需要屏蔽部分輸出 2:開發(fā)過程中盡量輸出到控制臺,運行過程中則修改配置使其輸出到文件. 3:定義log盡量使用文件名作為參數(shù),這樣容易查找錯誤.
|
|