IT科技

當前位置 /首頁/IT科技 > /列表

logging,java

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java logging是什麼,讓我們一起了解一下?

Logging是在Java中的API,讓Java應用可以記錄不同級別的信息,在debug過程中非常有用,如果系統因為各種各樣的原因而崩潰,崩潰原因可以在日誌中清晰地追溯。

 一般對於Java的日誌處理,可能大家首先聯想到的就是Log4J,Apache的這個項目確實廣泛的應用於各個系統中,但是後來Sun在JDK中也添加了類似的日誌功能,使用JDK自帶的日誌處理比Log4J特別好的一點就是不需要導入任何第三方Jar。

JDK自帶日誌類位於java.util.logging包中,同時在JDK安裝目錄的jre/lib下面有個默認的日誌屬性文件:logging.properties。

java logging

其次,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()+""+record.getLoggerName()+"";     }}

TAG標籤:logging java #