日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

循序渐进看Java web日志跟踪(2)-Java日志API认识

發布時間:2024/4/15 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 循序渐进看Java web日志跟踪(2)-Java日志API认识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  接觸過Java的朋友應該都會知道,java的開源框架百花齊放,實現同樣的功能,總能找到幾個強大的開源框架來進行選擇。在日志方面,Java同樣不遜色。除了JDK本身自帶的簡單的日志工具,java還有如log4j,commons-loggin,slf4j,logback等眾多第三方工具框架可供開發者使用,其中,上述幾個框架,雖說都實現了日志記錄的功能,但相互之間各分伯仲,同時,也存在著一定的聯系。比如,log4j,slf4j,logback就是出自同一個人之手。   在了解各個框架之前,首先過過大部分日志框架的使用時會遇到的一些概念。 1、日志工具類(logger):通常,大部分的日志框架都會定義一個主要的日志輸出的工具類,開發者只需要聲明該類,即可實現大部分的日志輸出操作 2、日志輸出級別(Level):日志輸出的級別,意味著該日志的重要程度,大部分的日志框架的級別會分為:Debug(調試模式),Info,warn,error,fatal,其中,根據級別的大小排序,debug>info>warn>error>fatal。級別的大小,將會影響日志的輸出,將級別設置的越高,輸出的信息將會越多 3、日志輸出格式(format):日志輸出的格式,通??梢赃M行自定義,通過自定義的格式,輸出的詳細效果將不同 4、日志輸出的方式:即將日志輸出到哪?常見的輸出方式包括如:控制臺,文本文件,數據庫等 5、日志分割:日志文件若以文件的方式進行輸出的話,會存在文件大小問題,所以需要對日志進行分割,分割的方式可以分為按大小,按日期等。   如圖,常見的日志框架的工作流程大約都會圍繞著幾個對象展開。首先,通過日志工廠產生一個日志工具類,通過該類來進行日志的輸出和日志輸出級別的設置,該類的輸出,其實是通過另外的框架中定義的不同類型輸出類進行輸出,常見的包括文件輸出,數據庫輸出,都有與之相對應的日志輸出類。同時,該類接收來自配置文件或者開發者自定義的日志輸出格式,會根據該日志格式進行日志的輸出。   了解過大部分日志框架的工作方式,接下來了解一下,java的一些日志框架。   首先,java日志框架嫡長子,jdk自帶的log工具,該工具自JDK1.4版本開始就包含在java.util.logging包下。該工具由于太過粗糙,所以并沒有得到廣泛的使用,但是log框架應有的日志處理功能還是能夠實現的: 以下是通過JDK自帶的日志工具實現輸出的實例代碼: 1 public class SimpleLog { 2 3 4 public static void main(String[] args) throws SecurityException, IOException { 5 Logger log=Logger.getLogger("Test"); 6 //添加log處理,默認是console 7 ConsoleHandler console=new ConsoleHandler(); 8 console.setLevel(Level.ALL); 9 log.addHandler(console); 10 FileHandler file=new FileHandler("log.log"); 11 file.setLevel(Level.WARNING); 12 log.addHandler(file); 13 //設置日志輸出格式 14 file.setFormatter(new Formatter() { 15 16 @Override 17 public String format(LogRecord record) { 18 // TODO Auto-generated method stub 19 return new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date(record.getMillis())) +"------"+record.getLevel()+"-------"+record.getClass()+"-------"+record.getLoggerName()+"----"+record.getMessage()+"\t\n"; 20 } 21 }); 22 console.setFormatter(new Formatter() { 23 24 @Override 25 public String format(LogRecord record) { 26 return new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date(record.getMillis())) +"------"+record.getLevel()+"-------"+record.getClass()+"---"+record.getSourceMethodName()+"-------"+record.getLoggerName()+"----"+record.getMessage()+"\t\n"; 27 } 28 }); 29 //日志控制 30 log.log(Level.SEVERE, "測試日志"); 31 log.log(Level.INFO, "測試日志"); 32 log.log(Level.WARNING, "測試日志"); 33 log.log(Level.OFF, "測試日志"); 34 35 }

?

  接下來,看一下常見的日志框架,common-loggin,log4j,slf4j,logback。其實,個人認為,真正其中真正算是日志框架的只有log4j和logback而已。因為common-logging和slf4j都是進行日志框架整合的工具,本身并沒有獨特的日志處理功能。commons-logging其實是一個日志集合api,它通過檢測classpath環境下存在怎么樣的log工具,然后通過調用該工具來進行日志輸出操作 。默認情況下,common-logging是通過jdk自帶的log工具來實現日志輸出的,當檢測到項目中存在log4j此類的日志框架及其配置文件的時候,common-logging就會去調用該框架來進行日志的輸出。   接著,看下log4j,一個強大的日志框架。它支持文件俺輸出,復雜的自定義格式輸出,支持輸出成html,數據庫等,一系列的強大功能讓它成為了許多開源框架首選的日志工具。具體的關于log4j的配置,后續繼續更新。   再說說slf4j,其實它和common-logging有相似的功能,只不過,它并不是通過自己實現日志的整合,而是通過定義接口的,定義標準的方式進行的。Common-logging是通過自身來實現日志框架的調用,而slf4j并不同,它自身其實并沒有實現功能,它定義了接口,使用它進行日志輸出,通常需要導入slf4j的標準包,日志框架的包,還有就是繼承了slf4j定義的接口的操作對應日志框架的實現類包。表面上,我們是在使用slf4j進行日志輸出,其實,我們使用的是對應的實現類包中的方法進行日志輸出。   最后一個說到的日志框架,是logback,他和slf4j,log4j是同一個作者。后期,log4j停止了更新后,他又開源了一個新的日志框架就是logback,目前,國外的許多框架也已經開始使用logback了。因為是同出一人,所以logback的一些api其實與log4j有些相似之處,同時,logback也符合slf4j定義的標準,所以如果在項目中使用了slf4j和log4j,后期要改成logback,需要做的調整會比較少。

轉載于:https://www.cnblogs.com/Seanit/p/5126019.html

總結

以上是生活随笔為你收集整理的循序渐进看Java web日志跟踪(2)-Java日志API认识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。