Thinking in Java --日誌初步學習

1.log4j簡介
Log4j由三個重要的組件構成:日誌信息的級別(Loggers),日誌信息的輸出目的地(Appenders),日誌信息的輸出格式(Layouts)。日誌信息的級別指定這條日誌信息的重要程度;日誌信息的輸出目的地指定了日誌將打印到控制檯還是文件中;而輸出格式則控制了日誌信息的顯 示內容。
1) Loggers
Loggers組件可分爲五個級別,分別爲OFF、FATAL、ERROR、WARN、INFO、DEBUG,如果配置OFF則不打出任何信息。這些級別的優先級爲,DEBUG < INFO < WARN < ERROR < FATAL,分別用來指定這條日誌信息的重要程度。Log4j有一個規則:只輸出級別不低於設定級別的日誌信息。比如在這裏定 義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被打印出來。 在Appenders中也可以配置輸出的日誌級別。

配置根Loggers爲:

log4j.rootLogger = [ level ] , appenderName, appenderName, …

2)Appenders
Appender的任務是把layout格式化好的輸出內容送往指定的目的地,如控制檯(Console)、文件(Files)等
Log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender(控制檯)
  org.apache.log4j.FileAppender(文件)
  org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件)
  org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
  org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
Appenders的配置語法爲:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
  log4j.appender.appenderName.option1 = value1
  …
  log4j.appender.appenderName.option = valueN
  
3) Layouts
Log4j可以讓開發者按照自己喜歡的方式將日誌信息輸出到特定的Appenders中,Layouts提供四種日誌輸出樣式。
org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)

Layouts的配置語法爲:

  log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  log4j.appender.appenderName.layout.option1 = value1
  …
  log4j.appender.appenderName.layout.option = valueN

Log4J採用類似C語言中的printf函數的打印格式格式化日誌信息,打印參數如下: %m 輸出代碼中指定的消息

  %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
  %r 輸出自應用啓動到輸出該log信息耗費的毫秒數
  %c 輸出所屬的類目,通常就是所在類的全名
  %t 輸出產生該日誌事件的線程名
  %n 輸出一個回車換行符,Windows平臺爲“rn”,Unix平臺爲“n”
  %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
  %l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。

4) Log4j常用配置
在實際應用中,要使Log4j在系統中運行須事先設定配置文件。配置文件事實上也就是對Logger、Appender及Layout進行相應設定。Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是properties屬性文件。下面以properties屬性文件爲例介紹log4j.properties的配置。

log4j常用配置如下:
控制檯(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n

日誌文件(logFile)
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=D:/logs/log.log4j
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n
回滾文件(rollingFile)
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=DEBUG
log4j.appender.rollingFile.ImmediateFlush=true
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.File=D:/logs/log.log4j
log4j.appender.rollingFile.MaxFileSize=200KB
log4j.appender.rollingFile.MaxBackupIndex=50
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n
定期回滾日誌文件(dailyFile)
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.Threshold=DEBUG
log4j.appender.dailyFile.ImmediateFlush=true
log4j.appender.dailyFile.Append=true
log4j.appender.dailyFile.File=D:/logs/log.log4j
log4j.appender.dailyFile.DatePattern=’.’yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n

2 查看日誌常用的命令
1)cat命令:
功能:1)顯示整個文件。
示例: catfileName2 cat file1 file2 > file
說明:把檔案串連接後傳到基本輸出(屏幕或加 > fileName 到另一個檔案)
cat參數詳解:
-n 或 –number 由 1 開始對所有輸出的行數編號
-b 或 –number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 –squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-v 或 –show-nonprinting
2)more命令:
以百分比的形式查看日誌。
3)less命令:
跟more功能差不多,只不過less支持前後翻閱文件。
4)head命令:
功能:從文本文件的頭部開始查看,head 命令用於查看一個文本文件的開頭部分。
示例如下:
head example.txt 顯示文件 example.txt 的前十行內容;
head -n 20 example.txt 顯示文件 example.txt 的前二十行內容;
head詳解:
-n 指定你想要顯示文本多少行。
-n number 這個參數選項必須是十進制的整數,它將決定在文件中的位置,以行爲單位。
-c number 這個參數選項必須是十進制的整數,它將決定在文件中的位置,以字節爲單位。
5)tail命令:
功能:tail 命令用於顯示文本文件的末尾幾行。
示例如下:
tail example.txt 顯示文件 example.txt 的後十行內容;
tail -n 20 example.txt 顯示文件 example.txt 的後二十行內容;
tail -f example.txt 顯示文件 example.txt 的後十行內容並在文件內容增加後,自動顯示新增的文件內容。
tail -n 50 -f example.txt 顯示文件 example.txt 的後50行內容並在文件內容增加後,自動顯示新增的文件內容。
注意:
最後一條命令非常有用,尤其在監控日誌文件時,可以在屏幕上一直顯示新增的日誌信息。
tail詳解:
-b Number 從 Number 變量表示的 512 字節塊位置開始讀取指定文件。
-c Number 從 Number 變量表示的字節位置開始讀取指定文件。
-f 如果輸入文件是常規文件或如果 File 參數指定 FIFO(先進先出),
那麼 tail 命令不會在複製了輸入文件的最後的指定單元后終止,而是繼續
從輸入文件讀取和複製額外的單元(當這些單元可用時)。如果沒有指定 File 參數,
並且標準輸入是管道,則會忽略 -f 標誌。tail -f 命令可用於監視另一個進程正在寫入的文件的增長。
-k Number 從 Number 變量表示的 1KB 塊位置開始讀取指定文件。
-m Number 從 Number 變量表示的多字節字符位置開始讀取指定文件。使用該標誌提供在單字節和雙字節字符代碼集環境中的一致結果。
-n Number 從首行或末行位置來讀取指定文件,位置由 Number 變量的符號(+ 或 - 或無)表示,並通過行號 Number 進行位移。
-r 從文件末尾以逆序方式顯示輸出。-r 標誌的缺省值是以逆序方式顯示整個文件。如果文件大於 20,480 字節,那麼-r標誌只顯示最後的 20,480 字節。 -r 標誌只有
與 -n 標誌一起時纔有效。否則,就會將其忽略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章