锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓銆?span lang=EN-US>Log4j姒傚康錛?span lang=EN-US>
Log4j涓湁涓変釜涓昏鐨勭粍浠訛紝瀹冧滑鍒嗗埆鏄?span lang=EN-US>Logger銆?span lang=EN-US>Appender鍜?span lang=EN-US>Layout錛?span lang=EN-US>Log4j 鍏佽寮鍙戜漢鍛樺畾涔夊涓?span lang=EN-US>Logger錛屾瘡涓?span lang=EN-US>Logger鎷ユ湁鑷繁鐨勫悕瀛楋紝Logger涔嬮棿閫氳繃鍚嶅瓧鏉ヨ〃鏄庨毝灞炲叧緋匯傛湁涓涓?span lang=EN-US>Logger縐頒負Root錛屽畠姘歌繙 瀛樺湪錛屼笖涓嶈兘閫氳繃鍚嶅瓧媯绱㈡垨寮曠敤錛屽彲浠ラ氳繃Logger.getRootLogger()鏂規(guī)硶鑾峰緱錛屽叾瀹?span lang=EN-US>Logger閫氳繃 Logger.getLogger(String name)鏂規(guī)硶銆?span lang=EN-US>
Appender鍒欐槸鐢ㄦ潵鎸囨槑灝嗘墍鏈夌殑log淇℃伅瀛樻斁鍒頒粈涔堝湴鏂癸紝Log4j涓敮鎸佸縐?span lang=EN-US>appender錛屽 console銆?span lang=EN-US>files銆?span lang=EN-US>GUI components銆?span lang=EN-US>NT Event Loggers絳夛紝涓涓?span lang=EN-US>Logger鍙互鎷ユ湁澶氫釜Appender錛屼篃灝辨槸浣犳棦鍙互灝?span lang=EN-US>Log淇℃伅杈撳嚭鍒板睆騫曪紝鍚屾椂瀛樺偍鍒頒竴涓枃浠朵腑銆?span lang=EN-US>
Layout鐨勪綔鐢ㄦ槸鎺у埗Log淇℃伅鐨勮緭鍑烘柟寮忥紝涔熷氨鏄牸寮忓寲杈撳嚭鐨勪俊鎭?span lang=EN-US>
Log4j涓皢瑕佽緭鍑虹殑Log淇℃伅瀹氫箟浜?span lang=EN-US>5縐嶇駭鍒紝渚濇涓?span lang=EN-US>DEBUG銆?span lang=EN-US>INFO銆?span lang=EN-US>WARN銆?span lang=EN-US>ERROR鍜?span lang=EN-US>FATAL錛屽綋杈撳嚭鏃訛紝鍙湁綰у埆楂樿繃閰嶇疆涓瀹氱殑綰у埆鐨勪俊鎭墠鑳界湡姝g殑杈撳嚭錛岃繖鏍峰氨寰堟柟渚跨殑鏉ラ厤緗笉鍚屾儏鍐典笅瑕佽緭鍑虹殑鍐呭錛岃屼笉闇瑕佹洿鏀逛唬鐮?span lang=EN-US>
浜屻?span lang=EN-US>Log4j鐨勯厤緗枃浠?span lang=EN-US>
Log4j鎻愪緵鐨?span lang=EN-US>appender鏈変互涓嬪嚑縐嶏細
org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛?span lang=EN-US>
org.apache.log4j.FileAppender錛堟枃浠訛級
org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級
org.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熸柊鏂囦歡錛?span lang=EN-US>
org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級
閰嶇疆鏃ュ織淇℃伅鐨勬牸寮忥紙甯冨眬錛夛紝鍏惰娉曚負錛?span lang=EN-US>
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j鎻愪緵鐨?span lang=EN-US>layout鏈変互涓嬪嚑縐嶏細
org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級
閰嶇疆鏂囦歡鏈変袱縐嶆牸寮忓垎鍒槸xml鍜?span lang=EN-US>property錛屾垜鍙涔?fàn)浜?span lang=EN-US>property鏍煎紡
#root 鏍煎紡log4j.rootLogger=[level,appenderName,appenderName....]錛屽彲浠ユ湁澶氫釜appender
log4j.rootLogger=INFO,A1,R
#A1杈撳嚭鏂瑰紡涓烘帶鍒跺彴錛?span lang=PT-BR>layout鏍煎紡鍙互鏄嚜璁㈢殑
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
#R1杈撳嚭鏂瑰紡涓烘枃浠跺ぇ灝忓埌杈?span lang=PT-BR>500KB鐨勬椂鍊欎駭鐢熸柊鏂囦歡錛?span lang=PT-BR>layout鏍煎紡鍙互鏄嚜璁㈢殑
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=petstorlog4j.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
涓夈佸湪WEB搴旂敤緋葷粺涓敞鍐?span lang=EN-US>Log4j錛堝鏋滅郴緇熸湰韜姞鍏?span lang=EN-US>spring灝變笉闇瑕佽繖涓姝ラ錛?span lang=EN-US>
鍒涘緩涓涓垵濮嬪寲log4j鐨?span lang=EN-US>servlet濡備笅鍒涘緩涓涓悕涓?#8220;log4jInit”錛屽茍鍦?span lang=EN-US>init錛堬級鏂規(guī)硶閲屾坊鍔?span lang=EN-US>
public void init() {
String prefix = getServletContext().getRealPath("/");
//鍙栧緱web.xml閲?span lang=EN-US>sevelt浼犻掔殑鍙傛暟props鐨勫鹼紝璇ュ弬鏁版寚瀹?span lang=EN-US>log4j.properties鏂?span lang=EN-US>//浠剁殑璺緞
String file = getInitParameter("props");
// if the log4j-init-file is not set, then no point in trying
System.out.println("................log4j start");
if(file != null) {
PropertyConfigurator.configure(prefix+file);
}
}
鍦?span lang=EN-US>WEB.xml閲岀殑閰嶇疆濡備笅
<servlet>
<servlet-name>log4jInit</servlet-name>
<servlet-class>com.petstor.servlet.log4jInit</servlet-class>
<init-param>
<param-name>props</param-name>
<param-value>log4j.properties</param-value>
</init-param>
<!鈥?/span>鍦ㄦ湇鍔″櫒鍚姩鏄紝鍔犺澆璇?span lang=EN-US>servlet錛涘茍涓斿彧鍔犺澆涓嬈?span lang=EN-US>-->
<load-on-startup>1</load-on-startup>
</servlet>
鍥涖佸湪紼嬪簭涓嬌鐢?span lang=EN-US>Log4j
瑕佸湪鑷繁鐨勭被涓嬌鐢?span lang=EN-US>Log4j錛岄鍏堝0鏄庝竴涓潤鎬佸彉閲?span lang=EN-US>Logger logger=Logger.getLog("classname")錛涘湪浣跨敤涔嬪墠錛岀敤PropertyConfigurator.configure ("閰嶇疆鏂囦歡")閰嶇疆涓涓嬶紝鐜板湪灝卞彲浠ヤ嬌鐢ㄤ簡錛岀敤娉曞涓嬶細logger.debug("debug message")鎴栬?span lang=EN-US>logger.info("info message")錛岀湅涓嬮潰涓涓皬渚嬪瓙錛?span lang=EN-US>
import com.foo.Bar;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class.getName());
public static void main(String[] args) {
// BasicConfigurator replaced with PropertyConfigurator.
PropertyConfigurator.configure(args[0]);
logger.info("Entering application.");
Bar bar = new Bar();
bar.doIt();
logger.info("Exiting application.");
}
}