Log4j的好處——同SystemOutPrintIn的比較

Log4j的定義

Log4j是Apache的一個開源項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼

System.Out.PrintIn的定義

輸出字符串。System是java.lang里面的一個類
,而out就是System里面的一個數據成員(也稱為字段),但這個成員不是基本類,而是java.io.PrintStream類的對象,我們先看看下面的截圖,被關鍵字static修飾的數據成員或方法可以直接通過“類名.數據成員”或“類名.方法”來引用,而無須先建立對象。所以System.out是應用了out這個靜態數據成員。而out又是一個java.io.PrintStream類的對象,所以out必然可以調用java.io.PrintStream類里面的方法,println()就是java.io.PrintStream類里的一個方法,它的作用就是用來想控制臺輸出信息的。

代碼實例比較

System.Out.PrintIn

不知道這句話是在哪個類,哪個線程里出來的

不知道什么時候前后兩句輸出間隔了多少時間

無法關閉調試信息,一旦System.out.println多了之后,到處都是輸出,增加定位自己需要信息的難度?等等


1

光禿禿的輸出信息

Log4j

知道是哪個類的日志

知道是哪個線程的日志

日志級別可以觀察TRACE DEBUG INFO WARN ERROR FATAL

知道時間間隔


2

Log4j配置

log4j.properties


設置輸出格式

設置輸出文件

log4j.rootLogger=DEBUG,Console,Stdout//輸出地方,控制臺,輸出信息登記DEBUG

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n//輸出格式

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender

log4j.appender.Stdout.File = C://logs/log.log //輸出文件存儲路徑

log4j.appender.Stdout.Append = true

log4j.appender.Stdout.Threshold = DEBUG

log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.Stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}? [ %t:%r ] - [ %p ]? %m%n

格式解釋

log4j日志輸出格式一覽:

%c 輸出日志信息所屬的類的全名

%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },輸出類似:2002-10-18- 22:10:28

%f 輸出日志信息所屬的類的類名

%l 輸出日志事件的發生位置,即輸出日志信息的語句處于它所在的類的第幾行

%m 輸出代碼中指定的信息,如log(message)中的message

%n 輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n”

%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推

%r 輸出自應用啟動到輸出該日志信息所耗費的毫秒數

%t 輸出產生該日志事件的線程名

所以:

%5p [%t] (%F:%L) - %m%n 就表示

寬度是5的優先等級 線程名稱 (文件名:行號) - 信息 回車換行

PPT:PPT

------------------------------------------------------------------------------------------------------------------------

IT修真院

“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧 !http://www.jnshu.com/login/1/11605661

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,082評論 1 13
  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,029評論 0 6
  • 一、Log4j簡介 Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layo...
    默默守護閱讀 1,927評論 2 8
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan閱讀 3,325評論 0 0
  • log4j 1.1 簡介 Log4j是一個由Java編寫可靠、靈活的日志框架,是Apache旗下的一個開源項目;現...
    賈博巖閱讀 7,960評論 1 32