Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志
生活随笔
收集整理的這篇文章主要介紹了
Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
11.5 日志記錄可以通過Loger.getGlobal().info(xxxx);的方式來記錄log。
11.5.2 高級日志
1)通過一個包名來 創建一個新的日志記錄器。private static final Logger logger = Logger.getLogger("my.learvjava.learnlog");
2)日志記錄器也具有層次結構,且日志記錄器的父子之間將共享某些屬性,比如如果對com.mycompany設置了日志級別,那么其子記錄器也會繼承這個級別。3)有以下7個日志記錄器級別:SEVERWARNINGINFOCONFIGFINEFINERFINEST默認值記錄前三個級別。可以使用Level.ALL來開啟所有級別的記錄,或者使用 Level.OFF來關閉所有級別的記錄。4)由于默認記錄了info及其以上的級別,所以要使用? ? CONFIG, FINE, FINER, FINEST來記錄那些有助于診斷,但是對程序員沒有太大意義的調試信息。
5)void entering(xxx), void exiting(xxxx)將生成finer級別的日志信息。6)可以用下面的方法來記錄日志中包含的異常信息。if(xxxx){ IOException e = new IOException("xxx); logger.throwing("com.mycompany.mlib.Reader", 'read", e); throw e; } 調用throwing可以記錄一條finner級別的記錄和一條以THROW開始的信息。
11.5.3??修改日志管理配置? ? 默認情況下位于e/lib/logging.properties文件內。
?? ? 如果要修改,就需要在啟動的時候通過如下命令來修改:? ? java?? ? -Djava.util.logging.config.file=configfile mainjavaclass
? ? 因為默認的日志信息是記錄在java.util.logging.config.file這個靜態變量中的。
? ? 在main方法中調用System.setProperties("java.util.logging.config.file", file)不會起作用,其原因是日志管理器在vm啟動過程中被初始化,他會在main之前被執行。
? ? 可以通過在logging.properties中添加如下命令來設置日志記錄級別
? ? .level=FINE
? ??
? ??
11.5.4 本地化? ? 雖然五年前我們在做我們應用程序的本地化的時候完全是靠自己想象的,但是現在回頭來看,其實我們做的東西和java的本地化的思路是類似的,都是針對不同的語言提供不同的語言文件,通過key=value的文本文件的方式來提供。
? ? java中稍微有點區別,他允許同時存在多種語言的語言文件,只是在名字中增加語言前綴,而我們是通過將語言文件放在語言文件夾中來決定的。
? ??
? ? 這也側面說明了當編程進行到一定階段之后,解決問題的思路是想通的。
? ??
? ??
11.5.5 處理器? ? 與日志記錄器一樣,日志處理器也有日志記錄級別。對于一個要被記錄的日志,他的日志級別必須高于日志記錄器和處理器的閾值。? ? 日志管理器配置文件中記錄的控制臺處理器的日志級別為:? ? java.util.logging.ConsoleHandler.level=INFO? ??? ? 也可以繞過配置文件,不適用默認的處理器,而適用自定義的處理器:? Logger logger = Logger.getLogger("com.mycompany.myapp"); logger.setLevel(Level.FINE); logger.setUseParantHanler(false); Handler handler = new ConsoleHandler(); handler.setLevel(Level.FINE); logger.addHandler(handler); ? ?要想將日志發送到其他地方,就需要添加其他的處理器。java api為此提供了兩個很有用的處理器:FileHandler, SocketHandler。
FileHandler fileHandler = new FileHandler(); logger.addHandler(fileHandler); ? ? 如果希望寫更復雜的流處理器,就應該擴展Handler類,并自定義public/flush/close方法。
? ??
11.5.6 過濾器? ? 只需要實現Filter接口的? ? boolean isLoggable(LogRecord record);? ? 方法,就可以定義一個自己的過濾器。? ??? ? 記錄器和處理器都可以設置過濾器,每個記錄器和處理最多只能設置一個過濾器。? ??? ???11.5.7 格式化器? ? 實現Formatter接口,然后實現其中的 String format(LogRecord record)方法即可。? ? 然后在通過調用處理器的setFormater(Fomater formater)方法來設置。? ??? ??? ?
來自為知筆記(Wiz)
11.5.2 高級日志
1)通過一個包名來 創建一個新的日志記錄器。private static final Logger logger = Logger.getLogger("my.learvjava.learnlog");
2)日志記錄器也具有層次結構,且日志記錄器的父子之間將共享某些屬性,比如如果對com.mycompany設置了日志級別,那么其子記錄器也會繼承這個級別。3)有以下7個日志記錄器級別:SEVERWARNINGINFOCONFIGFINEFINERFINEST默認值記錄前三個級別。可以使用Level.ALL來開啟所有級別的記錄,或者使用 Level.OFF來關閉所有級別的記錄。4)由于默認記錄了info及其以上的級別,所以要使用? ? CONFIG, FINE, FINER, FINEST來記錄那些有助于診斷,但是對程序員沒有太大意義的調試信息。
5)void entering(xxx), void exiting(xxxx)將生成finer級別的日志信息。6)可以用下面的方法來記錄日志中包含的異常信息。
11.5.3??修改日志管理配置? ? 默認情況下位于e/lib/logging.properties文件內。
?? ? 如果要修改,就需要在啟動的時候通過如下命令來修改:? ? java?? ? -Djava.util.logging.config.file=configfile mainjavaclass
? ? 因為默認的日志信息是記錄在java.util.logging.config.file這個靜態變量中的。
? ? 在main方法中調用System.setProperties("java.util.logging.config.file", file)不會起作用,其原因是日志管理器在vm啟動過程中被初始化,他會在main之前被執行。
? ? 可以通過在logging.properties中添加如下命令來設置日志記錄級別
? ? .level=FINE
? ??
? ??
11.5.4 本地化? ? 雖然五年前我們在做我們應用程序的本地化的時候完全是靠自己想象的,但是現在回頭來看,其實我們做的東西和java的本地化的思路是類似的,都是針對不同的語言提供不同的語言文件,通過key=value的文本文件的方式來提供。
? ? java中稍微有點區別,他允許同時存在多種語言的語言文件,只是在名字中增加語言前綴,而我們是通過將語言文件放在語言文件夾中來決定的。
? ??
? ? 這也側面說明了當編程進行到一定階段之后,解決問題的思路是想通的。
? ??
? ??
11.5.5 處理器? ? 與日志記錄器一樣,日志處理器也有日志記錄級別。對于一個要被記錄的日志,他的日志級別必須高于日志記錄器和處理器的閾值。? ? 日志管理器配置文件中記錄的控制臺處理器的日志級別為:? ? java.util.logging.ConsoleHandler.level=INFO? ??? ? 也可以繞過配置文件,不適用默認的處理器,而適用自定義的處理器:?
? ??
11.5.6 過濾器? ? 只需要實現Filter接口的? ? boolean isLoggable(LogRecord record);? ? 方法,就可以定義一個自己的過濾器。? ??? ? 記錄器和處理器都可以設置過濾器,每個記錄器和處理最多只能設置一個過濾器。? ??? ???11.5.7 格式化器? ? 實現Formatter接口,然后實現其中的 String format(LogRecord record)方法即可。? ? 然后在通過調用處理器的setFormater(Fomater formater)方法來設置。? ??? ??? ?
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/strinkbug/p/4997914.html
總結
以上是生活随笔為你收集整理的Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA自学笔记08
- 下一篇: java美元兑换,(Java实现) 美元