基本上,我們在建構一個系統時,通常都會輸出必要的資訊至log file內,而做這個輸出動作
如果要做的多元一點的話,可以使用外部的library log4j,透過一個設定檔來自訂日期輸出
格式、輸出的資訊等級、輸出log file的路徑等等。
本文主要是探討,如何使用log4j來針對單一某個java class檔做輸出資訊,一般情況應該都
是一個Web內所有的class通吃一種格式,並且輸出至同一個log檔,不過由於需求要開闢一支
單獨的java程式來給windows排程工作執行自動發送mail的動作,由於執行路徑的問題,因此
若沿用原本的log設定會額外建一個log檔至其他目錄,因此乾脆自行定義一個新的log設定,
單單針對這支程式,並輸出至指定的另外一個位置。
log4j property設定檔如下:
A1, A3本身一個是在console輸出,一個是Web log檔的輸出,若我們要單單針對一個class檔
來自訂的話,如下:
首先我的class的package路徑為com.mail.SysAutoSendMail
另外,log4j.additivity.com.mail.SysAutoSendMail=false,需設為false,如此一來
com.mail.SysAutoSendMail下產生的log info就不會append進A3的log file內了!
PS. 在此不針對log4j的相關設定進行探討,若有興趣google一下應該有一堆教學了XD
如果要做的多元一點的話,可以使用外部的library log4j,透過一個設定檔來自訂日期輸出
格式、輸出的資訊等級、輸出log file的路徑等等。
本文主要是探討,如何使用log4j來針對單一某個java class檔做輸出資訊,一般情況應該都
是一個Web內所有的class通吃一種格式,並且輸出至同一個log檔,不過由於需求要開闢一支
單獨的java程式來給windows排程工作執行自動發送mail的動作,由於執行路徑的問題,因此
若沿用原本的log設定會額外建一個log檔至其他目錄,因此乾脆自行定義一個新的log設定,
單單針對這支程式,並輸出至指定的另外一個位置。
log4j property設定檔如下:
log4j.rootLogger=INFO, A1, A3 ##log4j.rootLogger=ERROR, A1, A3 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern= %-5p[%d{yyyy-MM-dd HH:mm:ss}] %F:%L - %m%n log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender log4j.appender.A3.File=../logs/Web.log log4j.appender.A3.DatePattern=.yyyy-MM-dd #log4j.appender.A3.Threshold=ERROR log4j.appender.A3.layout=org.apache.log4j.PatternLayout log4j.appender.A3.layout.ConversionPattern= %-5p[%d{yyyy-MM-dd HH:mm:ss}] %F:%L - %m%n
A1, A3本身一個是在console輸出,一個是Web log檔的輸出,若我們要單單針對一個class檔
來自訂的話,如下:
log4j.logger.com.mail.SysAutoSendMail=INFO, mailAppender log4j.additivity.com.mail.SysAutoSendMail=false log4j.appender.mailAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.mailAppender.File=C:/logs/Mail.log log4j.appender.mailAppender.DatePattern=.yyyy-MM-dd #log4j.appender.A3.Threshold=ERROR log4j.appender.mailAppender.layout=org.apache.log4j.PatternLayout log4j.appender.mailAppender.layout.ConversionPattern= %-5p[%d{yyyy-MM-dd HH:mm:ss}] %F:%L - %m%n
首先我的class的package路徑為com.mail.SysAutoSendMail
另外,log4j.additivity.com.mail.SysAutoSendMail=false,需設為false,如此一來
com.mail.SysAutoSendMail下產生的log info就不會append進A3的log file內了!
PS. 在此不針對log4j的相關設定進行探討,若有興趣google一下應該有一堆教學了XD
留言
張貼留言