锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 錛?錛夌敤瀹㈡埛绔繛鎺ュ埌鏁版嵁搴擄紝鎵цselect * from v$instance 錛?錛塻elect * from product_component_version 錛?錛夋垨鏌ヨV$VERSION鏌ョ湅緇勪歡綰т俊鎭?/span> 銆銆 %p 杈撳嚭浼樺厛綰э紝鍗矰EBUG錛孖NFO錛學ARN錛孍RROR錛孎ATAL
鍥鵑潰瀛樻斁鐨勪綅緗?
eclipse_home\plugins\org.eclipse.platform_3.2.2.r322_v20070117b\splash.bmp
綰㈣壊瀛椾綋涓嶅浐瀹氾紝闅廵clipse鐨勭増鏈笉鍚岃屼笉鍚?br />
娉細姝や負杞創錛屼笉鐭ラ亾鍘熷嚭澶勶紝鍛靛懙銆?/span>
]]>
release 8.1.1.0 [Added]
鏌ョ湅oracle鐨勭増鏈俊鎭湁鍑犱釜鏂規硶
鏌ョ湅version欏?/span>
]]>
Log4j鍙互甯姪璋冭瘯錛堟湁鏃跺檇ebug鏄彂鎸ヤ笉浜嗕綔 鐢ㄧ殑錛夊拰鍒嗘瀽錛岃涓嬭澆鍜屼簡瑙f洿璇︾粏鐨勫唴瀹癸紝榪樻槸璁塊棶鍏跺畼鏂圭綉绔欏惂錛?/font> http://jakarta.apache.org/log4j 銆?br />
2銆丩og4j鐨勬蹇?/strong>
Log4j涓湁涓変釜涓昏鐨勭粍浠訛紝瀹冧滑鍒嗗埆鏄?/font> Logger銆丄ppender鍜孡ayout錛孡og4j 鍏佽寮鍙戜漢鍛樺畾涔夊涓狶ogger錛屾瘡涓狶ogger鎷ユ湁鑷繁鐨勫悕瀛楋紝Logger涔嬮棿閫氳繃鍚嶅瓧鏉ヨ〃鏄庨毝灞炲叧緋匯傛湁涓涓狶ogger縐頒負Root錛屽畠姘歌繙瀛樺湪錛屼笖涓嶈兘閫氳繃鍚嶅瓧媯绱㈡垨寮曠敤錛屽彲浠ラ氳繃Logger.getRootLogger()鏂規硶鑾峰緱錛屽叾瀹僉ogger閫氳繃 Logger.getLogger(String name)鏂規硶銆?br />
Appender鍒欐槸鐢ㄦ潵鎸囨槑灝嗘墍鏈夌殑log淇℃伅瀛樻斁鍒頒粈涔堝湴鏂癸紝Log4j涓敮鎸佸縐峚ppender錛屽 console銆乫iles銆丟UI components銆丯T Event Loggers絳夛紝涓涓狶ogger鍙互鎷ユ湁澶氫釜Appender錛屼篃灝辨槸浣犳棦鍙互灝哃og淇℃伅杈撳嚭鍒板睆騫曪紝鍚屾椂瀛樺偍鍒頒竴涓枃浠朵腑銆?br />
Layout鐨勪綔鐢ㄦ槸鎺у埗Log淇℃伅鐨勮緭鍑烘柟寮忥紝涔熷氨鏄牸寮忓寲杈撳嚭鐨勪俊鎭?br />
Log4j涓皢瑕佽緭鍑虹殑Log淇℃伅瀹氫箟浜?縐嶇駭鍒紝渚濇涓篋EBUG銆両NFO銆乄ARN銆丒RROR鍜孎ATAL錛屽綋杈撳嚭鏃訛紝鍙湁綰у埆楂樿繃閰嶇疆涓瀹氱殑綰у埆鐨勪俊鎭墠鑳界湡姝g殑杈撳嚭錛岃繖鏍峰氨寰堟柟渚跨殑鏉ラ厤緗笉鍚屾儏鍐典笅瑕佽緭鍑虹殑鍐呭錛岃屼笉闇瑕佹洿鏀逛唬鐮侊紝榪欑偣瀹炲湪鏄柟渚垮晩銆?br />
3銆丩og4j鐨勯厤緗枃浠?/strong>
铏界劧鍙互涓嶇敤閰嶇疆鏂囦歡錛岃屽湪紼嬪簭涓疄鐜伴厤緗紝浣嗚繖縐嶆柟娉曞湪濡備粖鐨勭郴緇熷紑鍙戜腑鏄劇劧鏄笉鍙彇鐨勶紝鑳介噰鐢ㄩ厤緗枃浠剁殑鍦版柟涓瀹氫竴瀹氳鐢ㄩ厤緗枃浠躲侺og4j鏀寔涓ょ鏍煎紡鐨勯厤緗枃浠訛細XML鏍煎紡鍜孞ava鐨刾roperty鏍煎紡錛屾湰浜烘洿鍠滄鍚庤咃紝棣栧厛鐪嬩竴涓畝鍗曠殑渚嬪瓙鍚э紝濡備笅錛?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
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
棣栧厛錛屾槸璁劇疆root錛屾牸寮忎負 log4j.rootLogger=[level],appenderName, ...錛屽叾涓璴evel灝辨槸璁劇疆闇瑕佽緭鍑轟俊鎭殑綰у埆錛屽悗闈㈡槸appender鐨勮緭鍑虹殑鐩殑鍦幫紝appenderName灝辨槸鎸囧畾鏃ュ織淇℃伅杈撳嚭鍒板摢涓湴鏂廣傛偍鍙互鍚屾椂鎸囧畾澶氫釜杈撳嚭鐩殑鍦般?/font> 閰嶇疆鏃ュ織淇℃伅杈撳嚭鐩殑鍦癆ppender錛屽叾璇硶涓?br />
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j鎻愪緵鐨刟ppender鏈変互涓嬪嚑縐嶏細
org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛?br />
org.apache.log4j.FileAppender錛堟枃浠訛級
org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級
org.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熸柊鏂囦歡錛?br />
org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級
閰嶇疆鏃ュ織淇℃伅鐨勬牸寮忥紙甯冨眬錛夛紝鍏惰娉曚負錛?br />
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j鎻愪緵鐨刲ayout鏈変互涓嬪嚑縐嶏細
org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級
Log4J閲囩敤綾諱技C璇█涓殑printf鍑芥暟鐨勬墦鍗版牸寮忔牸寮忓寲鏃ュ織淇℃伅錛屾墦鍗板弬鏁板涓嬶細 %m 杈撳嚭浠g爜涓寚瀹氱殑娑堟伅
銆銆%r 杈撳嚭鑷簲鐢ㄥ惎鍔ㄥ埌杈撳嚭璇og淇℃伅鑰楄垂鐨勬縐掓暟
銆銆%c 杈撳嚭鎵灞炵殑綾葷洰錛岄氬父灝辨槸鎵鍦ㄧ被鐨勫叏鍚?
銆銆%t 杈撳嚭浜х敓璇ユ棩蹇椾簨浠剁殑綰跨▼鍚?
銆銆%n 杈撳嚭涓涓洖杞︽崲琛岀錛學indows騫沖彴涓?#8220;\r\n”錛孶nix騫沖彴涓?#8220;\n”
銆銆%d 杈撳嚭鏃ュ織鏃墮棿鐐圭殑鏃ユ湡鎴栨椂闂達紝榛樿鏍煎紡涓篒SO8601錛屼篃鍙互鍦ㄥ叾鍚庢寚瀹氭牸寮忥紝姣斿錛?d{yyy MMM dd HH:mm:ss,SSS}錛岃緭鍑虹被浼鹼細
銆銆%l 杈撳嚭鏃ュ織浜嬩歡鐨勫彂鐢熶綅緗紝鍖呮嫭綾葷洰鍚嶃佸彂鐢熺殑綰跨▼錛屼互鍙婂湪浠g爜涓殑琛屾暟銆備婦渚嬶細Testlog4.main(TestLog4.java:10)
4銆丩og4j鍦ㄧ▼搴忎腑鐨勪嬌鐢?/strong>
瑕佸湪鑷繁鐨勭▼搴忎腑浣跨敤Log4j錛岄鍏堥渶瑕佸皢commons-logging.jar鍜宭ogging-log4j-1.2.9.jar瀵煎叆鍒版瀯寤鴻礬寰勪腑銆傜劧鍚庡啀灝唋og4j.properties鏀懼埌src鏍圭洰褰曚笅銆傝繖鏍峰氨鍙互鍦ㄧ▼搴忎腑浣跨敤log4j浜嗐傚湪綾諱腑浣跨敤log4j錛?/font> 棣栧厛澹版槑涓涓潤鎬佸彉閲?/font> Logger logger=Logger.getLog("classname")錛涚幇鍦ㄥ氨鍙互浣跨敤浜嗭紝鐢ㄦ硶濡備笅錛歭ogger.debug("debug message")鎴栬卨ogger.info("info message")錛岀湅涓嬮潰涓涓皬渚嬪瓙錛?/font>
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.");
}
}
]]>