[maven 7] 加入LOG4J
- 參考網誌
- Log4j 是一套開放源碼的工具,方便編程人員在程式中加入 log 機制,並輸出到各種目標上
- 設定方式 , 可在server端設定 , 也可在project
- 三大元件
- Logger - 由編程人員在程式中使用,進行 logging 的元件
- Appender - 負責將 log message 輸出到各種裝置上
- Layout - 決定 log message 的格式
- Logger
- 等級 : FATAL > ERROR > WARN > INFO > DEBUG
- 當Logger設為 INFO時 , 只有比INFO高等級的結果才會被記錄下來 , 例如 FATAL、ERROR、WARN
- Appender
- 一個Logger物件可以同時輸出記錄到不同Appender(裝置)上
- 一般情況 , 當子類別輸出紀錄時 , 父類別同時輸出相同訊息
- Layout
- %r [%t] %-5p %c - %m%n
- 176 [main] INFO org.foo.Bar - Located nearest gas station.
- PatternLayout 的 格式字元列表如下:
- %c 輸出日誌訊息所屬的類別的全名
- %d 輸出日誌時間點的日期或時間,指定格式的方式:%d{yyy-MM-dd HH:mm:ss }。
- %l 輸出日誌事件的發生位置,即輸出日誌訊息的語句處於它所在的類別的第幾行。
- %m 輸出訊息,如log(message)中的message。
- %n 輸出一個列尾符號。
- %p 輸出優先階層,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推。
- %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。
- %t 輸出產生該日誌事件的線程名。
- %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。
- %f 輸出日誌訊息所屬的類別的類別名。
- 在src./main/resources目錄新增 log4j.properties
- 設定logger等級為 INFO , 有console與syslog兩個appender
- 其中syslog將把紀錄寫至 C:/usr/log/MyApp2.log裡
- 輸出樣式可改變 , 例如 11 、12行可互換 成 HTML樣式
- 建立一支程式Log4j.java , 使用logger紀錄 INFO
- static : 此為靜態方法 , 不用實體化Log4j類別 , 即可呼叫 init方法
- Logger logger = Logger.getLogger(Log4j.class);
- 產生logger物件時需要class名稱 Log4j
- logger.info("hello");
- 程式讀到此行時 , 將 INFO訊息 hello 寫入 MyApp2.log
- 在上一個單元 maven 6 的IndexController 類別塞入Log4j.init(); , 因為init 是靜態方法 , 不用先 new Log4j類別
- 啟動專案後 , 在網址列 送出 request
- http://localhost:8080/MyApp2/index1
- 然後至 C:/usr/log/MyApp2.log 查看有無寫入即完成 , 且內容格式會按照log4j.properties 設定之方式呈現 , 以及hello 訊息
沒有留言:
張貼留言