锘??xml version="1.0" encoding="utf-8" standalone="yes"?> >>>> 4 . Log4j鐨勯厤緗?<<<<銆銆 銆銆瀹為檯浣跨敤錛歭ogger.info("ServerSocket before accept: " + server); 瀹為檯搴旂敤錛?br />
log4j.appender.A1=org.apache.log4j.ConsoleAppender //榪欓噷鎸囧畾浜嗘棩蹇楄緭鍑虹殑絎竴涓綅緗瓵1鏄帶鍒跺彴ConsoleAppender B. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 銆銆榪欓噷涓婇潰涓変釜姝ラ鏄鍓嶉潰Log4j緇勪歡璇存槑鐨勪竴涓畝鍖栵紱涓嬮潰緇欏嚭涓涓叿浣撻厤緗緥瀛愶紝鍦ㄧ▼搴忎腑鍙互鍙傜収鎵ц錛?br />
log4j.rootLogger=INFO,A1錛孊2 log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender //鎸囧畾浠ユ枃浠剁殑鏂瑰紡杈撳嚭鏃ュ織 ×××××××××××××××××××××××××××××××××××××××××××××××× LOG4J鐨勯厤緗箣綆鍗曚嬌瀹冮亶鍙婁簬瓚婃潵瓚婂鐨勫簲鐢ㄤ腑浜嗭細Log4J閰嶇疆鏂囦歡瀹炵幇浜嗚緭鍑哄埌鎺у埗鍙般佹枃浠躲佸洖婊氭枃浠躲佸彂閫佹棩蹇楅偖浠躲佽緭鍑哄埌鏁版嵁搴撴棩蹇楄〃銆佽嚜瀹氫箟鏍囩絳夊叏濂楀姛鑳姐傛嫨鍏朵竴浜屼嬌鐢ㄥ氨澶熺敤浜嗭紝 log4j.rootLogger=DEBUG,CONSOLE,A1,im # 搴旂敤浜庢帶鍒跺彴 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender #搴旂敤浜庢枃浠?/p>
log4j.appender.FILE=org.apache.log4j.FileAppender # 搴旂敤浜庢枃浠跺洖婊?/p>
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender # 鍙戦佹棩蹇楃粰閭歡 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender # 鐢ㄤ簬鏁版嵁搴? #鑷畾涔堿ppender log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender log4j.appender.im.host = mail.cybercorlin.net log4j.appender.im.layout=org.apache.log4j.PatternLayout
浠ヤ笂鏄粠鍘熺悊鏂歸潰璇存槑Log4j鐨勪嬌鐢ㄦ柟娉曪紝鍦ㄥ叿浣揓ava緙栫▼浣跨敤Log4j鍙互鍙傜収浠ヤ笅紺轟緥錛?br />
1銆?寤虹珛Logger瀹炰緥錛?br />
璇硶琛ㄧず錛歱ublic static Logger getLogger( String name)
瀹為檯浣跨敤錛歴tatic Logger logger = Logger.getLogger(ServerWithLog4j.class.getName ()) ;
2銆?璇誨彇閰嶇疆鏂囦歡錛?br />
鑾峰緱浜哃ogger鐨勫疄渚嬩箣鍚庯紝鎺ヤ笅鏉ュ皢閰嶇疆Log4j浣跨敤鐜錛?br />
璇硶琛ㄧず錛?br />
BasicConfigurator.configure()錛氳嚜鍔ㄥ揩閫熷湴浣跨敤緙虹渷Log4j鐜銆?br />
PropertyConfigurator.configure(String configFilename)錛氳鍙栦嬌鐢↗ava鐨勭壒鎬ф枃浠剁紪鍐欑殑閰嶇疆鏂囦歡銆?br />
DOMConfigurator.configure(String filename)錛氳鍙朮ML褰㈠紡鐨勯厤緗枃浠躲?br />
瀹為檯浣跨敤錛?br />
PropertyConfigurator.configure("ServerWithLog4j.properties");
3銆?鎻掑叆鏃ュ織淇℃伅
瀹屾垚浜嗕互涓婅繛涓楠や互鍚庯紝涓嬮潰灝卞彲浠ユ寜鏃ュ織鐨勪笉鍚岀駭鍒彃鍏ュ埌浣犺璁板綍鏃ュ織鐨勪換浣曞湴鏂逛簡銆?br />
璇硶琛ㄧず錛?br />
Logger.debug(Object message);//璋冭瘯淇℃伅
Logger.info(Object message);//涓鑸俊鎭?br />
Logger.warn(Object message);//璀﹀憡淇℃伅
Logger.error(Object message);//閿欒淇℃伅
Logger.fatal(Object message);//鑷村懡閿欒淇℃伅
>>>> 5. 閰嶇疆榪囩▼ <<<<
銆鍦ㄥ疄闄呯紪紼嬫椂錛岃浣縇og4j鐪熸鍦ㄧ郴緇熶腑榪愯浜嬪厛榪樿瀵歸厤緗枃浠惰繘琛屽畾涔夈傚畾涔夋楠ゅ氨鏄Logger銆丄ppender鍙奓ayout鐨勫垎鍒嬌鐢ㄣ?br />
Log4j鏀寔涓ょ閰嶇疆鏂囦歡鏍煎紡錛屼竴縐嶆槸XML鏍煎紡鐨勬枃浠訛紝涓縐嶆槸java properties錛坘ey=value錛夈怞ava鐗規ф枃浠訛紙閿?鍊鹼級銆戙備笅闈㈡垜浠粙緇嶄嬌鐢↗ava鐗規ф枃浠跺仛涓洪厤緗枃浠剁殑鏂規硶
鍏蜂綋濡備笅錛?br />
1銆侀厤緗牴Logger錛?/strong>鍏惰娉曚負錛?br />
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 鏄棩蹇楄褰曠殑浼樺厛綰э紝鍒嗕負OFF銆丗ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG銆丄LL鎴栬呮偍瀹氫箟鐨勭駭鍒侺og4j寤鴻鍙嬌鐢ㄥ洓涓駭鍒紝浼?鍏堢駭浠庨珮鍒頒綆鍒嗗埆鏄疎RROR銆乄ARN銆両NFO銆丏EBUG銆傞氳繃鍦ㄨ繖閲屽畾涔夌殑綰у埆錛屾偍鍙互鎺у埗鍒板簲鐢ㄧ▼搴忎腑鐩稿簲綰у埆鐨勬棩蹇椾俊鎭殑寮鍏熾傛瘮濡傚湪榪欓噷瀹?涔変簡INFO綰у埆錛屽垯搴旂敤紼嬪簭涓墍鏈塂EBUG綰у埆鐨勬棩蹇椾俊鎭皢涓嶈鎵撳嵃鍑烘潵銆?br />
appenderName:灝辨槸鎸囧畾鏃ュ織淇℃伅杈撳嚭鍒板摢涓湴鏂廣傛偍鍙互鍚屾椂鎸囧畾澶氫釜杈撳嚭鐩殑鍦般?br />
渚嬪錛歭og4j.rootLogger錛漣nfo,A1,B2,C3
2銆侀厤緗棩蹇椾俊鎭緭鍑虹洰鐨勫湴錛屽叾璇硶涓猴細
log4j.appender.appenderName = fully.qualified.name.of.appender.class //
"fully.qualified.name.of.appender.class" 鍙互鎸囧畾涓嬮潰浜斾釜鐩殑鍦頒腑鐨勪竴涓細
1.org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛?br />
2.org.apache.log4j.FileAppender錛堟枃浠訛級
3.org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級
4.org.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熶竴涓柊鐨勬枃浠訛級
5.org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級
1.ConsoleAppender閫夐」
Threshold=WARN:鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰嬈°?br />
ImmediateFlush=true:榛樿鍊兼槸true,鎰忚皳鐫鎵鏈夌殑娑堟伅閮戒細琚珛鍗寵緭鍑恒?br />
Target=System.err錛氶粯璁ゆ儏鍐典笅鏄細System.out,鎸囧畾杈撳嚭鎺у埗鍙?br />
2.FileAppender 閫夐」
Threshold=WARN:鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰嬈°?br />
ImmediateFlush=true:榛樿鍊兼槸true,鎰忚皳鐫鎵鏈夌殑娑堟伅閮戒細琚珛鍗寵緭鍑恒?br />
File=mylog.txt:鎸囧畾娑堟伅杈撳嚭鍒癿ylog.txt鏂囦歡銆?br />
Append=false:榛樿鍊兼槸true,鍗沖皢娑堟伅澧炲姞鍒版寚瀹氭枃浠朵腑錛宖alse鎸囧皢娑堟伅瑕嗙洊鎸囧畾鐨勬枃浠跺唴瀹廣?br />
3.DailyRollingFileAppender 閫夐」
Threshold=WARN:鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰嬈°?br />
ImmediateFlush=true:榛樿鍊兼槸true,鎰忚皳鐫鎵鏈夌殑娑堟伅閮戒細琚珛鍗寵緭鍑恒?br />
File=mylog.txt:鎸囧畾娑堟伅杈撳嚭鍒癿ylog.txt鏂囦歡銆?br />
Append=false:榛樿鍊兼槸true,鍗沖皢娑堟伅澧炲姞鍒版寚瀹氭枃浠朵腑錛宖alse鎸囧皢娑堟伅瑕嗙洊鎸囧畾鐨勬枃浠跺唴瀹廣?br />
DatePattern='.'yyyy-ww:姣忓懆婊氬姩涓嬈℃枃浠訛紝鍗蟲瘡鍛ㄤ駭鐢熶竴涓柊鐨勬枃浠躲傚綋鐒朵篃鍙互鎸囧畾鎸夋湀銆佸懆銆佸ぉ銆佹椂鍜屽垎銆傚嵆瀵瑰簲鐨勬牸寮忓涓嬶細
1)'.'yyyy-MM: 姣忔湀
2)'.'yyyy-ww: 姣忓懆
3)'.'yyyy-MM-dd: 姣忓ぉ
4)'.'yyyy-MM-dd-a: 姣忓ぉ涓ゆ
5)'.'yyyy-MM-dd-HH: 姣忓皬鏃?br />
6)'.'yyyy-MM-dd-HH-mm: 姣忓垎閽?br />
4.RollingFileAppender 閫夐」
Threshold=WARN:鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰嬈°?br />
ImmediateFlush=true:榛樿鍊兼槸true,鎰忚皳鐫鎵鏈夌殑娑堟伅閮戒細琚珛鍗寵緭鍑恒?br />
File=mylog.txt:鎸囧畾娑堟伅杈撳嚭鍒癿ylog.txt鏂囦歡銆?br />
Append=false:榛樿鍊兼槸true,鍗沖皢娑堟伅澧炲姞鍒版寚瀹氭枃浠朵腑錛宖alse鎸囧皢娑堟伅瑕嗙洊鎸囧畾鐨勬枃浠跺唴瀹廣?br />
MaxFileSize=100KB: 鍚庣紑鍙互鏄疜B, MB 鎴栬呮槸 GB. 鍦ㄦ棩蹇楁枃浠跺埌杈捐澶у皬鏃訛紝灝嗕細鑷姩婊氬姩錛屽嵆灝嗗師鏉ョ殑鍐呭縐誨埌mylog.log.1鏂囦歡銆?br />
MaxBackupIndex=2:鎸囧畾鍙互浜х敓鐨勬粴鍔ㄦ枃浠剁殑鏈澶ф暟銆?/p>
3銆侀厤緗棩蹇椾俊鎭殑鏍煎紡錛屽叾璇硶涓猴細
A. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
"fully.qualified.name.of.layout.class" 鍙互鎸囧畾涓嬮潰4涓牸寮忎腑鐨勪竴涓細
1.org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
2.org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
3.org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
4.org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級
1.HTMLLayout 閫夐」
LocationInfo=true:榛樿鍊兼槸false,杈撳嚭java鏂囦歡鍚嶇О鍜岃鍙?br />
Title=my app file: 榛樿鍊兼槸 Log4J Log Messages.
2.PatternLayout 閫夐」
ConversionPattern=%m%n :鎸囧畾鎬庢牱鏍煎紡鍖栨寚瀹氱殑娑堟伅銆?br />
3.XMLLayout 閫夐」
LocationInfo=true:榛樿鍊兼槸false,杈撳嚭java鏂囦歡鍜岃鍙?br />
瀹為檯搴旂敤錛?br />
銆銆log4j.appender.A1.layout=org.apache.log4j.PatternLayout
榪欓噷闇瑕佽鏄庣殑灝辨槸鏃ュ織淇℃伅鏍煎紡涓嚑涓鍙鋒墍浠h〃鐨勫惈涔夛細
錛峏鍙? X淇℃伅杈撳嚭鏃跺乏瀵歸綈錛?br />
%p: 杈撳嚭鏃ュ織淇℃伅浼樺厛綰э紝鍗矰EBUG錛孖NFO錛學ARN錛孍RROR錛孎ATAL,
%d: 杈撳嚭鏃ュ織鏃墮棿鐐圭殑鏃ユ湡鎴栨椂闂達紝榛樿鏍煎紡涓篒SO8601錛屼篃鍙互鍦ㄥ叾鍚庢寚瀹氭牸寮忥紝姣斿錛?d{yyy MMM dd HH:mm:ss,SSS}錛岃緭鍑虹被浼鹼細2002騫?0鏈?8鏃?22錛?0錛?8錛?21
%r: 杈撳嚭鑷簲鐢ㄥ惎鍔ㄥ埌杈撳嚭璇og淇℃伅鑰楄垂鐨勬縐掓暟
%c: 杈撳嚭鏃ュ織淇℃伅鎵灞炵殑綾葷洰錛岄氬父灝辨槸鎵鍦ㄧ被鐨勫叏鍚?br />
%t: 杈撳嚭浜х敓璇ユ棩蹇椾簨浠剁殑綰跨▼鍚?br />
%l: 杈撳嚭鏃ュ織浜嬩歡鐨勫彂鐢熶綅緗紝鐩稿綋浜?C.%M(%F:%L)鐨勭粍鍚?鍖呮嫭綾葷洰鍚嶃佸彂鐢熺殑綰跨▼錛屼互鍙婂湪浠g爜涓殑琛屾暟銆備婦渚嬶細Testlog4.main(TestLog4.java:10)
%x: 杈撳嚭鍜屽綋鍓嶇嚎紼嬬浉鍏寵仈鐨凬DC(宓屽璇婃柇鐜),灝ゅ叾鐢ㄥ埌鍍廽ava servlets榪欐牱鐨勫瀹㈡埛澶氱嚎紼嬬殑搴旂敤涓?br />
%%: 杈撳嚭涓涓?%"瀛楃
%F: 杈撳嚭鏃ュ織娑堟伅浜х敓鏃舵墍鍦ㄧ殑鏂囦歡鍚嶇О
%L: 杈撳嚭浠g爜涓殑琛屽彿
%m: 杈撳嚭浠g爜涓寚瀹氱殑娑堟伅,浜х敓鐨勬棩蹇楀叿浣撲俊鎭?br />
%n: 杈撳嚭涓涓洖杞︽崲琛岀錛學indows騫沖彴涓?\r\n"錛孶nix騫沖彴涓?\n"杈撳嚭鏃ュ織淇℃伅鎹㈣
鍙互鍦?涓庢ā寮忓瓧絎︿箣闂村姞涓婁慨楗扮鏉ユ帶鍒跺叾鏈灝忓搴︺佹渶澶у搴︺佸拰鏂囨湰鐨勫榻愭柟寮忋傚錛?br />
1)%20c錛氭寚瀹氳緭鍑篶ategory鐨勫悕縐幫紝鏈灝忕殑瀹藉害鏄?0錛屽鏋渃ategory鐨勫悕縐板皬浜?0鐨勮瘽錛岄粯璁ょ殑鎯呭喌涓嬪彸瀵歸綈銆?br />
2)%-20c:鎸囧畾杈撳嚭category鐨勫悕縐幫紝鏈灝忕殑瀹藉害鏄?0錛屽鏋渃ategory鐨勫悕縐板皬浜?0鐨勮瘽錛?-"鍙鋒寚瀹氬乏瀵歸綈銆?br />
3)%.30c:鎸囧畾杈撳嚭category鐨勫悕縐幫紝鏈澶х殑瀹藉害鏄?0錛屽鏋渃ategory鐨勫悕縐板ぇ浜?0鐨勮瘽錛屽氨浼氬皢宸﹁竟澶氬嚭鐨勫瓧絎︽埅鎺夛紝浣嗗皬浜?0鐨勮瘽涔熶笉浼氭湁絀烘牸銆?br />
4)%20.30c:濡傛灉category鐨勫悕縐板皬浜?0灝辮ˉ絀烘牸錛屽茍涓斿彸瀵歸綈錛屽鏋滃叾鍚嶇О闀夸簬30瀛楃錛屽氨浠庡乏杈逛氦榪滈攢鍑虹殑瀛楃鎴帀銆?/p>
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
銆銆鏍規嵁涓婇潰鐨勬棩蹇楁牸寮忥紝鏌愪竴涓▼搴忕殑杈撳嚭緇撴灉濡備笅錛?br />
0銆銆INFO銆2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'
16銆 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT
4. # 褰撹緭鍑轟俊鎭簬鍥炴粴鏂囦歡鏃?/strong>
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log //鏂囦歡浣嶇疆,涔熷彲浠ョ敤鍙橀噺${java.home}銆乺olling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB //鏂囦歡鏈澶у昂瀵?br />
log4j.appender.ROLLING_FILE.MaxBackupIndex=1 //澶囦喚鏁?br />
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 銆銆
>>>> 6. Log4j姣旇緝鍏ㄩ潰鐨勯厤緗?<<<<
log4j.addivity.org.apache=true
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log //鏂囦歡浣嶇疆,涔熷彲浠ョ敤鍙橀噺${java.home}銆乺olling.log
log4j.appender.ROLLING_FILE.Append=true //true:娣誨姞 false:瑕嗙洊
log4j.appender.ROLLING_FILE.MaxFileSize=10KB //鏂囦歡鏈澶у昂瀵?br />
log4j.appender.ROLLING_FILE.MaxBackupIndex=1 //澶囦喚鏁?br />
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#搴旂敤浜巗ocket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
]]>
Oracle涓垹闄よ〃涓浉鍚岃褰曠殑鍒嗘瀽
鍒嗕袱縐嶆儏鍐碉細
1錛屽垹闄ゆ墍鏈夊瓧孌靛潎鐩稿悓鐨勮錛?/span>
create table tablexxx as (select * from tableyyy group by col1,col2,col3…)
drop table tableyyy
create table tableyyy as (select * from tablexxx)
drop table tablexxx
2錛岃〃涓湁id(PK)鍒楋紝鍒犻櫎鍏跺畠鎵鏈夊瓧孌?/span>鍙栧肩浉鍚岀殑琛岋細
delete b where id not in
(
select min(id) from B
group by col1,col2,col3...
)