java logging是什么,讓我們一起了解一下?
Logging是在Java中的API,讓Java應用可以記錄不同級別的信息,在debug過程中非常有用,如果系統因為各種各樣的原因而崩潰,崩潰原因可以在日志中清晰地追溯。
?一般對于Java的日志處理,可能大家首先聯想到的就是Log4J,Apache的這個項目確實廣泛的應用于各個系統中,但是后來Sun在JDK中也添加了類似的日志功能,使用JDK自帶的日志處理比Log4J特別好的一點就是不需要導入任何第三方Jar。
JDK自帶日志類位于java.util.logging包中,同時在JDK安裝目錄的jre/lib下面有個默認的日志屬性文件:logging.properties。
其次,JDK日志原理和Log4J原理類似:
1、LoggerManager類用于管理日志的配置,和Log4J的PropertyConfigurator類對應。
2、Logger類是日志信息記錄的入口,和Log4J的Log類對應。
3、日志輸出位置:控制臺ConsoleHandler,文件FileHandler,以及流輸出StreamHandler等,和Log4J的Appender對應。
4、日志輸出格式:默認SimpleFormatter,XMLFormatter等,和Log4J的Pattern對應。
實戰操作,一個自定義log輸出到文件,不輸出到控制臺。
代碼如下:
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; /** ?*?日志類FileLog,包含一個日志和一個文件 ?*?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);//不輸出到控制臺,如果沒有該語句,則控制臺和文件都會輸出 this.f?=?fl; } /** *?為日志添加行為信息 *?@param?message?行為信息內容,包括操作類型,計劃項名字(如果對計劃項進行操作) */ 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?警告信息內容,包括異常/錯誤類型,異常/錯誤的具體信息、異常/錯誤處理的結果。或者為斷言信息內容。 */ 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"; ???? ?} }
以上就是小編今天的分享了,希望可以幫助到大家。