锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
A:)鍦╓eb Application 涓嬌鐢╨og4j
Step 1:
閰嶇疆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涓瑼ppender鏈夊嚑灞?BR>#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
================================鍙﹀涓縐嶉厤緗?BR>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 杈撳嚭鍒版枃浠?BR>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
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);
//鏍規嵁閰嶇疆鍒濆鍖杔og4j
}
System.out.println("[....Log4j]: InitServlet Init Sucess...");
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
public void doPost(HttpServletRequest req, HttpServletResponse res) {
}
}
B:鍦ㄤ竴鑸殑IDE涓嬌鐢╨og4j,鍥犱負浣跨敤log4j闇瑕佸仛涓浜涘垵濮嬪寲錛屽湪Web Application
涓繖涓閮ㄥ垎鍒濆鍖栨槸鏈堿ppServer 鍚姩鏄姞杞界殑銆傚湪IDE涓紝鍒欐垜浠湪浣跨敤log4j
涔嬪墠闇瑕佽嚜宸遍厤緗竴涓嬨?BR>濡備笅鏂囦歡錛?BR>public final class Lo4jTest {
private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
private static Logger log = Logger.getLogger(CLASS_NAME);
//鍦╓eb Application 涓笅闈㈢殑pattern鏄湪log4j鐨勯厤緗枃浠朵腑閰嶇疆鐨勩?BR>//鐜板湪鎴戜滑鎵嬪姩閰嶇疆
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";
//璁劇疆杈撳嚭灞?BR>//
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();
//閰嶇疆鏃秎og4j鎻愪緵浜嗕袱縐嶆柟寮?BR>//鍚庝竴縐嶆瘮杈冪畝鍗曪紝杈撳嚭鐨勪俊鎭笉澶熻緇?BR>//鎴戜滑鍙互浣跨敤鍓嶄竴縐嶈緭鍑烘垜浠笇鏈涚殑鏍煎紡
log.debug("Log4j Debug.");
log.error("Log4j Error.");
log.info("Log4j Info.");
log.fatal("Log4j Fatal.");
}
}
//浣跨敤pattern2涓婇潰鐨勮緭鍑虹粨鏋滃涓?BR>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.]
private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
//log4j1.2
private static Logger log = Logger.getLogger(CLASS_NAME);
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涓殑涓縐嶏紝浠ュ悗鍙互鏍規嵁闇瑕佸睆钄介儴鍒嗚緭鍑?BR>2:寮鍙戣繃紼嬩腑灝介噺杈撳嚭鍒版帶鍒跺彴錛岃繍琛岃繃紼嬩腑鍒欎慨鏀歸厤緗嬌鍏惰緭鍑哄埌鏂囦歡.
3:瀹氫箟log灝介噺浣跨敤鏂囦歡鍚嶄綔涓哄弬鏁幫紝榪欐牱瀹規槗鏌ユ壘閿欒.