log4j.properties 配置詳解
一、基礎知識
1. log4j.properties 基本配置格式如下
// --------------------------------------- log4j.properties 配置開始 ---------------------------------------
// 配置rootLogger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
// 對配置根Logger的說明(1):
// 類別 level 為 OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL或自定義的優先順序
// Log4j常用的優先順序:FATAL > ERROR > WARN > INFO > DEBUG
// ERROR 為嚴重錯誤 主要是程式的錯誤
// WARN 為一般警告,比如session丟失
// INFO 為一般要顯示的資訊,比如登入登出
// DEBUG 為程式的除錯資訊
// 對配置根Logger的說明(2):
// appenderName1,appenderName2...為配置每一個日誌資訊輸出目的地的命名,可自行命名,同時可以指定多個輸出目的地
// < ------------------------- appenderName1 日誌輸出方式配置開始 ------------------------- >
// 定義appenderName1的輸出方式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
// 語法:log4j.appender.appenderName = fully.qualified.name.of.appender.class(日誌輸出目的地)
log4j.appender.appenderName1 = fully.qualified.name.of.appender.class
// 定義appenderName1當前輸出方式的引數 引數:option1...optionN
log4j.appender.appenderName1.option1 = value1
…
log4j.appender.appenderName1.optionN = valueN
// 定義appenderName1的輸出佈局(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
// 語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class(日誌輸出佈局)
log4j.appender.appenderName1.layout = fully.qualified.name.of.layout.class
// 定義appenderName1當前輸出佈局的輸出格式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName1)
// 語法:log4j.appender.appenderName.layout.ConversionPattern=(日誌輸出格式)
log4j.appender.appenderName1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
// < ------------------------- appenderName1 日誌輸出方式配置結束 ------------------------- >
// < ------------------------- appenderName2 日誌輸出方式配置開始 ------------------------- >
// 定義appenderName2的輸出方式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
// 語法:log4j.appender.appenderName = fully.qualified.name.of.appender.class(日誌輸出目的地)
log4j.appender.appenderName2 = fully.qualified.name.of.appender.class
// 定義appenderName1當前輸出方式的引數 引數:option1...optionN
log4j.appender.appenderName2.option1 = value1
…
log4j.appender.appenderName2.optionN = valueN
// 定義appenderName2的輸出佈局(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
// 語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class(日誌輸出佈局)
log4j.appender.appenderName1.layout = fully.qualified.name.of.layout.class
// 定義appenderName2當前輸出佈局的輸出格式(appenderName指當前的日誌資訊輸出目的地,當前為appenderName2)
// 語法:log4j.appender.appenderName.layout.ConversionPattern=(日誌輸出格式)
log4j.appender.appenderName1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
// < ------------------------- appenderName2 日誌輸出方式配置結束 ------------------------- >
// ... 其它日誌資訊輸出目的地 ...
// --------------------------------------- log4j.properties 配置結束 ---------------------------------------
舉個栗子:
// 指定日誌輸出的級別為debug,級別大於debug的全部輸出
// 指定輸出目的地stdout和file
log4j.rootLogger=debug, stdout, file
// 指定輸出目的地stdout為輸出到控制檯
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
// 指定stdout的日誌訊息的輸出最低層次
log4j.appender.stdout.Threshold=ERROR
// 指定stdoutr輸出控制檯,預設情況下是:System.out
log4j.appender.stdout.Target=System.err
// 指定stdoutr的佈局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
// 指定stdoutr的佈局的輸出格式
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
// 指定輸出目的地file為輸出到檔案
log4j.appender.file=org.apache.log4j.FileAppender
// 指定file的輸出日誌路徑
log4j.appender.file.File=${catalina.home}/logs_user/ZtreeDemoSSM.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
// ${catalina.home} tomcat伺服器的路徑 ======> D:\98.2_Eclipse\20_tomcat\apache-tomcat-7.0.77
// ${catalina.home}/logs_user/ZtreeDemoSSM.log 相當於 D:\98.2_Eclipse\20_tomcat\apache-tomcat-7.0.77/logs_user/ZtreeDemoSSM.log
2 日誌資訊輸出目的地(appenderName日誌輸出目的地的命名)
// 語法:log4j.appender.appenderName = fully.qualified.name.of.appender.class
// 有以下日誌輸出目的地
// 1)org.apache.log4j.ConsoleAppender(控制檯)
// 2)org.apache.log4j.FileAppender(檔案)
// 3)org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
// 4)org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
// 5)org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)
// 6)org.apache.log4j.net.SMTPAppender(郵件)
// 7)org.apache.log4j.jdbc.JDBCAppender(資料庫)
// 8)其他如:GUI元件、甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等
// 把 fully.qualified.name.of.appender.class 替換成從以上8種中選取的一種輸出目的地
3 日誌資訊輸出佈局(appenderName日誌輸出目的地的命名)
// 語法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
// 有以下四種輸出佈局
// 1)org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
// 2)org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
// 3)org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串),
// 4)org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)
// 把 fully.qualified.name.of.layout.class 替換成從以上4種中選取的一種輸出佈局即可
4 日誌資訊PatternLayout佈局的輸出格式
// 日誌資訊格式中幾個符號所代表的含義:
// -X號: X資訊輸出時左對齊;
// %p: 輸出日誌資訊優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,
// %d: 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
// %r: 輸出自應用啟動到輸出該log資訊耗費的毫秒數
// %c: 輸出日誌資訊所屬的類目,通常就是所在類的全名
// %t: 輸出產生該日誌事件的執行緒名
// %l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及在程式碼中的行數。舉例:Testlog4.main (TestLog4.java:10)
// %x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。
// %%: 輸出一個"%"字元
// %F: 輸出日誌訊息產生時所在的檔名稱
// %L: 輸出程式碼中的行號
// %m: 輸出程式碼中指定的訊息,產生的日誌具體資訊
// %n: 輸出一個回車換行符,Windows平臺為"/r/n",Unix平臺為"/n"輸出日誌資訊換行
// 可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如:
// 1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,預設的情況下右對齊。
// 2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。
// 3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格。
// 4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊較遠輸出的字元截掉。
// 舉個栗子
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
5 日誌輸出目的地各種引數
輸出到控制檯
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(指定輸出到控制檯)
log4j.appender.Threshold=DEBUG(指定輸出類別)
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(指定輸出佈局)
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出格式)
輸出到檔案
log4j.appender.FILE=org.apache.log4j.FileAppender(指定輸出到檔案)
log4j.appender.FILE.File=file.log(指定輸出的路徑及檔名)
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(指定輸出的佈局)
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出的格式)
輸出到檔案(輪換"日誌檔案",當日志文件達到指定大小時,該檔案就被關閉並備份,然後建立一個新的日誌檔案)
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定輸出到檔案)
log4j.appender.ROLLING_FILE.Threshold=ERROR(指定輸出類別)
log4j.appender.ROLLING_FILE.File=rolling.log(指定輸出的路徑及檔名)
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB(指定輸出到檔案的大小)
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(指定採用輸出佈局)
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定採用輸出格式)
輸出到Socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(指定輸出到Socket)
log4j.appender.SOCKET.RemoteHost=localhost(遠端主機)
log4j.appender.SOCKET.Port=5001(遠端主機埠)
log4j.appender.SOCKET.LocationInfo=true
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(佈局)
log4j.appender.SOCET.layout.ConversionPattern =[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n %m[MESSAGE]%n%n(輸出格式)
輸出到郵件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定輸出到郵件)
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
[email protected](發件人)
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP伺服器)
log4j.appender.MAIL.Subject=Log4J Message
[email protected](收件人)
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(佈局)
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
輸出到資料庫
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定輸出到資料庫)
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定資料庫URL)
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定資料庫driver)
log4j.appender.DATABASE.user=root(指定資料庫使用者)
log4j.appender.DATABASE.password=root(指定資料庫使用者密碼)
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(組織SQL語句)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(佈局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)
6 普通logger概念
舉個栗子:xxx.properties配置如下
// -------------------------------------
log4j.rootLogger=INFO, console, file
log4j.appender.console=net.czt.log.AsyncConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p crazyant-web %-17c{2} (%13F:%L) %X{USER_ID}|%X{USER_IP}|%X{SERVER_ADDRESS}|%X{SERVER_NAME}|%X{REQUEST_URI}|%X{SESSION_ID} - %m%n
log4j.appender.console.bufferSize=10000
log4j.appender.console.encoding=UTF-8
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.file=/home/work/apache-tomcat-6.0.39/logs/crazyant.log
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.MaxFileSize=1GB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p] crazyant-web %d{yyyy-MM-dd HH:mm:ss,SSS} %X{USER_ID}|%X{USER_IP}|%X{SERVER_ADDRESS}|%X{SERVER_NAME}|%X{REQUEST_URI}|%X{SESSION_ID} method:%l%n%m%n
log4j.appender.file.bufferSize=10000
log4j.appender.file.encoding=UTF-8
log4j.logger.net.czt.crazyant.msg=DEBUG, message
log4j.additivity.net.czt.crazyant.msg=false
log4j.appender.message=org.apache.log4j.RollingFileAppender
log4j.appender.message.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_message.log
log4j.appender.message.Append=true
log4j.appender.message.MaxFileSize=1GB
log4j.appender.message.MaxBackupIndex=5
log4j.appender.message.layout=org.apache.log4j.PatternLayout
log4j.appender.message.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.message.encoding=UTF-8
log4j.logger.net.czt.crazyant.async.service=DEBUG, async
log4j.additivity.net.czt.crazyant.async.service=false
log4j.appender.async=org.apache.log4j.RollingFileAppender
log4j.appender.async.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_async.log
log4j.appender.async.Append=true
log4j.appender.async.MaxFileSize=1GB
log4j.appender.async.MaxBackupIndex=5
log4j.appender.async.layout=org.apache.log4j.PatternLayout
log4j.appender.async.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.async.encoding=UTF-8
log4j.logger.net.czt.orm.mybatis.SqlMonitorManager=DEBUG, showsql
log4j.additivity.net.czt.orm.mybatis.SqlMonitorManager=false
log4j.logger.net.czt.transaction.interceptor.SmartTransactionInterceptor=DEBUG, showsql
log4j.additivity.net.czt.transaction.interceptor.SmartTransactionInterceptor=false
log4j.appender.showsql=org.apache.log4j.RollingFileAppender
log4j.appender.showsql.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_sql.log
log4j.appender.showsql.Append=true
log4j.appender.showsql.MaxFileSize=1GB
log4j.appender.showsql.MaxBackupIndex=5
log4j.appender.showsql.layout=org.apache.log4j.PatternLayout
log4j.appender.showsql.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.showsql.encoding=UTF-8
log4j.logger.net.czt.crazyant.service=DEBUG, service
log4j.additivity.net.czt.crazyant.service=false
log4j.appender.service=org.apache.log4j.RollingFileAppender
log4j.appender.service.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_service.log
log4j.appender.service.Append=true
log4j.appender.service.MaxFileSize=1GB
log4j.appender.service.MaxBackupIndex=5
log4j.appender.service.layout=org.apache.log4j.PatternLayout
log4j.appender.service.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.service.encoding=UTF-8
// -------------------------------------
在配置檔案的下方,可以方便的看到,將message(訊息)、async(後端執行緒)、showsql(資料庫日誌)、service(介面呼叫)分別輸出到了不同的日誌檔案。
預設情況下我們只需要一個rootLogger,就是所有的日誌只會輸出到這一個日誌檔案中。
如栗子中的log4j.rootLogger=INFO, console, file
日誌檔案輸出級別為INFO,有兩個輸出目的地:分別是console和file。
普通logger可以在rootLogger基礎上再定義一些規則。
語法:log4j.logger.包名=[ level ], appenderName1, appenderName2...
如下片段
log4j.logger.com.zeng.ssm.service=DEBUG, service_log, outputfile
log4j.additivity.com.zeng.ssm.service=false
log4j.appender.service_log=org.apache.log4j.RollingFileAppender
log4j.appender.service_log.File=/home/work/apache-tomcat-6.0.39/logs/crazyant_service_log.log
log4j.appender.service_log.Append=true
log4j.appender.service_log.MaxFileSize=1GB
log4j.appender.service_log.MaxBackupIndex=5
log4j.appender.service_log.layout=org.apache.log4j.PatternLayout
log4j.appender.service_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
log4j.appender.service_log.encoding=UTF-8
log4j.appender.outputfile=輸出目的地
...
1)log4j.logger.com.zeng.ssm.service=DEBUG, service_log, outputfile
定義了當包com.zeng.ssm.service中出現了大於DEBUG的日誌資訊時,輸出日誌到service_log,outputfile指定的配置中
2)log4j.additivity.com.zeng.ssm.service=false
flase表示該包com.zeng.ssm.service發生的大於DEBUG的日誌資訊,不輸出到rootLogger指定的日誌中,
僅輸出到該包指定的service_log和outputfile中
3)其它配置的設定方法和rootLogger的配置相同(如設定輸出目的地, 輸出佈局, 輸出佈局格式)
二、檔案配置案例
1 檔案配置Sample1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R
# ConsoleAppender 輸出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# File 輸出 一天一個檔案,輸出路徑可以定製,一般在根路徑下
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
2 檔案配置Sample2
// 下面給出的Log4J配置檔案實現了輸出到控制檯,檔案,回滾檔案,傳送日誌郵件,輸出到資料庫日誌表,自定義標籤等全套功能。
log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
log4j.addivity.org.apache=true
// Console Appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
// File Appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis
// Rolling File
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
// Socket Appender
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
// Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
// SMTP Appender
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
[email protected]
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
log4j.appender.MAIL.Subject=Log4J Message
[email protected]
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
// JDBC Appender
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
// A1 Appender
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
// 自定義Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = [email protected]
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
三、高階使用
實驗目的:
1.把FATAL級錯誤寫入2000NT日誌
2.WARN,ERROR,FATAL級錯誤傳送email通知管理員
3.其他級別的錯誤直接在後臺輸出
實驗步驟:
1.輸出到2000NT日誌
1)把Log4j壓縮包裡的NTEventLogAppender.dll拷到WINNT/SYSTEM32目錄下
2)寫配置檔案log4j.properties
# 在2000系統日誌輸出
log4j.logger.NTlog=FATAL, A8
# APPENDER A8
log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.A8.Source=JavaTest
log4j.appender.A8.layout=org.apache.log4j.PatternLayout
log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
3)呼叫程式碼:
Logger logger2 = Logger.getLogger("NTlog"); //要和配置檔案中設定的名字相同
logger2.debug("debug!!!");
logger2.info("info!!!");
logger2.warn("warn!!!");
logger2.error("error!!!");
//只有這個錯誤才會寫入2000日誌
logger2.fatal("fatal!!!");
2.傳送email通知管理員:
1)首先下載JavaMail和JAF,
http://java.sun.com/j2ee/ja/javamail/index.html
http://java.sun.com/beans/glasgow/jaf.html
在專案中引用mail.jar和activation.jar。
2)寫配置檔案
# 將日誌傳送到email
log4j.logger.MailLog=WARN,A5
# APPENDER A5
log4j.appender.A5=org.apache.log4j.net.SMTPAppender
log4j.appender.A5.BufferSize=5
[email protected]
[email protected]
log4j.appender.A5.Subject=ErrorLog
log4j.appender.A5.SMTPHost=smtp.263.net
log4j.appender.A5.layout=org.apache.log4j.PatternLayout
log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
3)呼叫程式碼:
//把日誌傳送到mail
Logger logger3 = Logger.getLogger("MailLog");
logger3.warn("warn!!!");
logger3.error("error!!!");
logger3.fatal("fatal!!!");
3.在後臺輸出所有類別的錯誤:
1)寫配置檔案
# 在後臺輸出
log4j.logger.console=DEBUG, A1
# APPENDER A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
2)呼叫程式碼
Logger logger1 = Logger.getLogger("console");
logger1.debug("debug!!!");
logger1.info("info!!!");
logger1.warn("warn!!!");
logger1.error("error!!!");
logger1.fatal("fatal!!!");
-------------------------------------------------------------------
全部配置檔案:log4j.properties
# 在後臺輸出
log4j.logger.console=DEBUG, A1
# APPENDER A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
# 在2000系統日誌輸出
log4j.logger.NTlog=FATAL, A8
# APPENDER A8
log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.A8.Source=JavaTest
log4j.appender.A8.layout=org.apache.log4j.PatternLayout
log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
# 將日誌傳送到email
log4j.logger.MailLog=WARN,A5
# APPENDER A5
log4j.appender.A5=org.apache.log4j.net.SMTPAppender
log4j.appender.A5.BufferSize=5
[email protected]
[email protected]
log4j.appender.A5.Subject=ErrorLog
log4j.appender.A5.SMTPHost=smtp.263.net
log4j.appender.A5.layout=org.apache.log4j.PatternLayout
log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
全部程式碼:Log4jTest.java
import org.apache.log4j.*;
//import org.apache.log4j.nt.*;
//import org.apache.log4j.net.*;
public class Log4jTest{
public static void main(String args[]){
PropertyConfigurator.configure("log4j.properties");
//在後臺輸出
Logger logger1 = Logger.getLogger("console");
logger1.debug("debug!!!");
logger1.info("info!!!");
logger1.warn("warn!!!");
logger1.error("error!!!");
logger1.fatal("fatal!!!");
//在NT系統日誌輸出
Logger logger2 = Logger.getLogger("NTlog");
//NTEventLogAppender nla = new NTEventLogAppender();
logger2.debug("debug!!!");
logger2.info("info!!!");
logger2.warn("warn!!!");
logger2.error("error!!!");
//只有這個錯誤才會寫入2000日誌
logger2.fatal("fatal!!!");
//把日誌傳送到mail
Logger logger3 = Logger.getLogger("MailLog");
//SMTPAppender sa = new SMTPAppender();
logger3.warn("warn!!!");
logger3.error("error!!!");
logger3.fatal("fatal!!!");
}
}
需要如下工具包:
commons-logging-1.1.3.jar
log4j-1.2.17.jar
也可追加如下兩個(版本必須一致):
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
相關推薦
log4j.properties配置詳解與實例
尺寸 bject debug deb .com 大數 配置日誌 應用程序 登錄 最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裏把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麽好的文
log4j.properties配置詳解與例項-全部測試通過[轉]
最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裡把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麼好的文件估計沒有了吧? ###############################################
commons-logging和Log4j 日誌管理/log4j.properties配置詳解
commons-logging和Log4j 日誌管理 (zz) 什麼要用日誌(Log)? 這個……就不必說了吧。 為什麼不用System.out.println()? 功能太弱;不易於控制。如果暫時不想輸出了怎麼辦?如果想輸出到檔案怎麼辦?如果想部分輸出怎麼辦?…… 為什麼
log4j.properties配置詳解
一、Log4j配置 第一步:加入log4j-1.2.8.jar到lib下。 第二步:在CLASSPATH下建立log4j.properties。內容如下: Java程式碼 收藏程式碼 log4j.rootCategory=INFO, stdout ,
spark log4j.properties配置詳解與例項
################################################################################ #①配置根Logger,其語法為: # #log4j.rootLogger = [level],appen
log4j.properties配置詳解與例項-全部測試通過
最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這裡把網上收集到的整理了一下,並且全部都在機器上測試成功了。這麼好的文件估計沒有了吧? ######################################
log4j.properties 配置詳解
一、基礎知識 1. log4j.properties 基本配置格式如下 // --------------------------------------- log4j.properties 配置開始 ---------------------------------
log4j.xml配置詳解 properties 的太費眼了
Xml程式碼 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log
log4j之log4j.properties引數詳解(log4j各個配置引數含義)
====>log4j之log4j.properties引數詳解 ====>log4j介紹: Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件
struts.properties配置詳解
pro request location pri term i18n 臨時 def toolbox Struts 2框架有兩個核心配置文件,其中struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。除此之 外,Struts
log4j的配置詳解(轉)
version let imp err pro 字符 bug rom 程序 轉自:http://blog.sina.com.cn/s/blog_5ed94d710101go3u.html 最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不
Log4J日誌配置詳解
append tar 行號 中間 註意 -h 控制 復制代碼 #### 一、Log4j簡介Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(布局)。這裏可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這
spring boot application properties配置詳解
ini let encoding odi gap pool nodes gui erp # =================================================================== # COMMON SPRING BOOT
java日誌處理元件log4j--log4j.xml配置詳解
<?xml version="1.0" encoding="GBK" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http:/
og4j.properties配置詳解
log4j.properties 使用 一.引數意義說明 輸出級別的種類 ERROR、WARN、INFO、DEBUG ERROR 為嚴重錯誤 主要是程式的錯誤 WARN 為一般警告,比如session丟失 INFO 為一般要顯示的資訊,比如登入登出 DEBUG 為程式的除錯資訊 配置日誌資訊輸出目的地 log
Log4J日誌配置詳解和自定義log4j日誌級別及輸出日誌到不同檔案實現方法
package com.jo.work.log4j; import java.util.Enumeration; import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.
log4j.xml配置詳解及log4j日誌使用詳解
log4j 有兩種配置方法,大家熟知的是properties檔案但是最近的專案實施中,每次去使用者那裡裝系統,都要苦惱於log檔案放在不同位置,要改property檔案就要重打jar包,麻煩的緊。而如果採用 xml配置的方法,直接放在WEB-INFO下,要修改路徑,很方便。查
apache Log4j日誌配置詳解
附:Log4j比較全面的配置Log4j配置檔案實現了輸出到控制檯、檔案、回滾檔案、傳送日誌郵件、輸出到資料庫日誌表、自定義標籤等全套功能。log4j.rootLogger=DEBUG,console,dailyFile,imlog4j.additivity.org.apache=true# 控制檯(conso
Log4J.xml配置詳解
Appender Appender:日誌輸出器,配置日誌的輸出級別、輸出位置等,包括以下幾類: ConsoleAppender: 日誌輸出到控制檯; FileAppender:輸出到檔案; RollingFileAppender:輸出到檔案,檔案達到一定閾
Log4j.xml配置詳解(轉)
Xml程式碼<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:confi