2012-08-28

log4j.properties 小記

設定檔可以分成兩部份:
  • logger - 來自於哪裡的 log 訊息,可以用 rootLogger 表示所有的訊息來源,也可以用 package 限定來源範圍。
  • appender - 要導向哪裡,可以是 console  或檔案。
## 所有的 Log,包括系統面的與我的程式的 Log ##
# 預設只接收 INFO 以上的訊息
# 然後導向 A1 這個 appender
log4j.rootLogger=INFO, A1

# A1 appender
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=all.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
# 特別的設定,可以另外設定訊息等級,多用在同一個 logger 有多個 appender 時,每個 appender 可以設定自己的訊息等級
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyy/MM/dd HH:mm:ss} %p [%t] %c{1} - %m%n

## 我的程式的 Log,用 package 限定範圍 ##
# 預設只接收 DEBUG 以上的訊息
# 然後導向 A2 和 A3 這兩個 appender
log4j.logger.idv.neil.app=DEBUG, A2, A3

# A2 appender
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=app.log
log4j.appender.A2.DatePattern='.'yyyy-MM-dd 
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyy/MM/dd HH:mm:ss} %p [%t] %c{1} - %m%n

# A3 appender
log4j.appender.A3=org.apache.log4j.ConsoleAppender
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyy/MM/dd HH:mm:ss} %p [%t] %c{1} - %m%n
奇怪的是下面這兩個設定產生的結果,系統面的 INFO 訊息收錄了,這沒有問題,但是我的程式的 DEBUG 因為第二行的設定也收錄了,就比較難以理解。
如果我的 DEBUG 被收錄了,那麼系統面的 DEBUG 怎麼沒有收錄?
log4j.rootLogger=INFO, A1
log4j.appender.A1.Threshold=DEBUG

---

沒有留言:

張貼留言