java logging是什么,讓我們一起了解一下?
Logging是在Java中的API,讓Java應(yīng)用可以記錄不同級(jí)別的信息,在debug過(guò)程中非常有用,如果系統(tǒng)因?yàn)楦鞣N各樣的原因而崩潰,崩潰原因可以在日志中清晰地追溯。
?一般對(duì)于Java的日志處理,可能大家首先聯(lián)想到的就是Log4J,Apache的這個(gè)項(xiàng)目確實(shí)廣泛的應(yīng)用于各個(gè)系統(tǒng)中,但是后來(lái)Sun在JDK中也添加了類(lèi)似的日志功能,使用JDK自帶的日志處理比Log4J特別好的一點(diǎn)就是不需要導(dǎo)入任何第三方Jar。
JDK自帶日志類(lèi)位于java.util.logging包中,同時(shí)在JDK安裝目錄的jre/lib下面有個(gè)默認(rèn)的日志屬性文件:logging.properties。
其次,JDK日志原理和Log4J原理類(lèi)似:
1、LoggerManager類(lèi)用于管理日志的配置,和Log4J的PropertyConfigurator類(lèi)對(duì)應(yīng)。
2、Logger類(lèi)是日志信息記錄的入口,和Log4J的Log類(lèi)對(duì)應(yīng)。
3、日志輸出位置:控制臺(tái)ConsoleHandler,文件FileHandler,以及流輸出StreamHandler等,和Log4J的Appender對(duì)應(yīng)。
4、日志輸出格式:默認(rèn)SimpleFormatter,XMLFormatter等,和Log4J的Pattern對(duì)應(yīng)。
實(shí)戰(zhàn)操作,一個(gè)自定義log輸出到文件,不輸出到控制臺(tái)。
代碼如下:
import?java.time.ZonedDateTime; import?java.time.format.DateTimeFormatter; import?java.util.logging.FileHandler; import?java.util.logging.Formatter; import?java.util.logging.Level; import?java.util.logging.LogRecord; import?java.util.logging.Logger; /** ?*?日志類(lèi)FileLog,包含一個(gè)日志和一個(gè)文件 ?*?imutable ?*/ public?class?FileLog?{ private?final?Logger?mylogger; private?final?FileHandler?f; public?FileLog(String?name?,FileHandler?fl)?{ mylogger?=?Logger.getLogger(name); this.mylogger.setLevel(Level.ALL); this.mylogger.setUseParentHandlers(false);//不輸出到控制臺(tái),如果沒(méi)有該語(yǔ)句,則控制臺(tái)和文件都會(huì)輸出 this.f?=?fl; } /** *?為日志添加行為信息 *?@param?message?行為信息內(nèi)容,包括操作類(lèi)型,計(jì)劃項(xiàng)名字(如果對(duì)計(jì)劃項(xiàng)進(jìn)行操作) */ public?void?addmseeagelog(String?message)?{ this.mylogger.setLevel(Level.INFO); //System.out.println("1"); //if(this.mylogger.getLevel().equals(Level.)) f.setFormatter(new?myFormat()); this.mylogger.addHandler(f); this.mylogger.info(message); } /** *?為日志添加警告信息 *?@param?message?警告信息內(nèi)容,包括異常/錯(cuò)誤類(lèi)型,異常/錯(cuò)誤的具體信息、異常/錯(cuò)誤處理的結(jié)果。或者為斷言信息內(nèi)容。 */ public?void?addwarninglog(String?message)?{ this.mylogger.setLevel(Level.WARNING); f.setFormatter(new?myFormat()); this.mylogger.addHandler(f); this.mylogger.warning(message); } public?String?logname()?{ return?this.mylogger.getName(); } } class?myFormat?extends?Formatter{ /*文件日志格式*/ ?@Override ?public?String?format(LogRecord?record){ ?????ZonedDateTime?zdf?=ZonedDateTime.now(); ?????String?sDate??=?zdf.format(DateTimeFormatter.ofPattern("yyyy-MM-dd?HH:mm")); ?????//System.out.println("2+"+record.getMessage()); ??????return?"["+?sDate?+?"]:?"+record.getMessage()+"\n"+record.getLoggerName()+"\n"; ???? ?} }
以上就是小編今天的分享了,希望可以幫助到大家。