Log4.properties配置詳解

1、Log4j簡介  Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裏可簡單理解爲日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個組件能夠輕鬆地記錄信息的類型和級別,並能夠在運行時控制日誌輸出的樣式和位置。  一、Loggers  Loggers組件在此係統中被分爲五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,分別用來指定這條日誌信息的重要程度,明白這一點很重要,Log4j有一個規則:只輸出級別不低於設定級別的日誌信息,假設Loggers級別設定爲INFO,則INFO、WARN、ERROR和FATAL級別的日誌信息都會輸出,而級別比INFO低的DEBUG則不會輸出。  二、Appenders  禁用和使用日誌請求只是Log4j的基本功能,Log4j日誌系統還提供許多強大的功能,好比容許把日誌輸出到不一樣的地方,如控制檯(Console)、文件(Files)等,能夠根據天數或者文件大小產生新的文件,能夠以流的形式發送到其它地方等等。  常使用的類以下:  org.apache.log4j.ConsoleAppender(控制檯)  org.apache.log4j.FileAppender(文件)  org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)  org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)  org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)  配置模式:  log4j.appender.appenderName = className  log4j.appender.appenderName.Option1 = value1  …  log4j.appender.appenderName.OptionN = valueN  三、Layouts  有時用戶但願根據本身的喜愛格式化本身的日誌輸出,Log4j能夠在Appenders的後面附加Layouts來完成這個功能。Layouts提供四種日誌輸出樣式,如根據HTML樣式、自由指定樣式、包含日誌級別與信息的樣式和包含日誌時間、線程、類別等信息的樣式。  常使用的類以下:  org.apache.log4j.HTMLLayout(以HTML表格形式佈局)  org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式)  org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)  org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等信息)  配置模式:  log4j.appender.appenderName.layout =className  log4j.appender.appenderName.layout.Option1 = value1  …  log4j.appender.appenderName.layout.OptionN = valueN  2、配置詳解  在實際應用中,要使Log4j在系統中運行須事先設定配置文件。配置文件事實上也就是對Logger、Appender及Layout進行相應設定。Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是properties屬性文件。下面以properties屬性文件爲例介紹log4j.properties的配置。  一、配置根Logger:  log4j.rootLogger = [ level ] , appenderName1, appenderName2, …  log4j.additivity.org.apache=false:表示Logger不會在父Logger的appender裏輸出,默認爲true。  level :設定日誌記錄的最低級別,可設的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別,Log4j建議只使用中間四個級別。經過在這裏設定級別,您能夠控制應用程序中相應級別的日誌信息的開關,好比在這裏設定了INFO級別,則應用程序中全部DEBUG級別的日誌信息將不會被打印出來。  appenderName:就是指定日誌信息要輸出到哪裏。能夠同時指定多個輸出目的地,用逗號隔開。  例如:log4j.rootLogger=INFO,A1,B2,C3  二、配置日誌信息輸出目的地(appender):  log4j.appender.appenderName = className  appenderName:自定義appderName,在log4j.rootLogger設置中使用;  className:可設值以下:  (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(將日誌信息以流格式發送到任意指定的地方)  (1)ConsoleAppender選項:  Threshold=WARN:指定日誌信息的最低輸出級別,默認爲DEBUG。  ImmediateFlush=true:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true。  Target=System.err:默認值是System.out。  (2)FileAppender選項:  Threshold=WARN:指定日誌信息的最低輸出級別,默認爲DEBUG。  ImmediateFlush=true:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true。  Append=false:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true。  File=D:/logs/logging.log4j:指定消息輸出到logging.log4j文件中。  (3)DailyRollingFileAppender選項:  Threshold=WARN:指定日誌信息的最低輸出級別,默認爲DEBUG。  ImmediateFlush=true:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true。  Append=false:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true。  File=D:/logs/logging.log4j:指定當前消息輸出到logging.log4j文件中。  DatePattern='.'yyyy-MM:每個月滾動一第二天志文件,即每個月產生一個新的日誌文件。當前月的日誌文件名爲logging.log4j,前一個月的日誌文件名爲logging.log4j.yyyy-MM。  另外,也能夠指定按周、天、時、分等來滾動日誌文件,對應的格式以下:  1)'.'yyyy-MM:每個月  2)'.'yyyy-ww:每週  3)'.'yyyy-MM-dd:天天  4)'.'yyyy-MM-dd-a:天天兩次  5)'.'yyyy-MM-dd-HH:每小時  6)'.'yyyy-MM-dd-HH-mm:每分鐘  (4)RollingFileAppender選項:  Threshold=WARN:指定日誌信息的最低輸出級別,默認爲DEBUG。  ImmediateFlush=true:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true。  Append=false:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true。  File=D:/logs/logging.log4j:指定消息輸出到logging.log4j文件中。  MaxFileSize=100KB:後綴能夠是KB, MB 或者GB。在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到logging.log4j.1文件中。  MaxBackupIndex=2:指定能夠產生的滾動文件的最大數,例如,設爲2則能夠產生logging.log4j.1,logging.log4j.2兩個滾動文件和一個logging.log4j文件。  三、配置日誌信息的輸出格式(Layout):  log4j.appender.appenderName.layout=className  className:可設值以下:  (1)org.apache.log4j.HTMLLayout(以HTML表格形式佈局)  (2)org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式)  (3)org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)  (4)org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)  (1)HTMLLayout選項:  LocationInfo=true:輸出java文件名稱和行號,默認值是false。  Title=My Logging: 默認值是Log4J Log Messages。  (2)PatternLayout選項:  ConversionPattern=%m%n:設定以怎樣的格式顯示消息。  格式化符號說明:  %p:輸出日誌信息的優先級,即DEBUG,INFO,WARN,ERROR,FATAL。  %d:輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。  %r:輸出自應用程序啓動到輸出該log信息耗費的毫秒數。  %t:輸出產生該日誌事件的線程名。  %l:輸出日誌事件的發生位置,至關於%c.%M(%F:%L)的組合,包括類全名、方法、文件名以及在代碼中的行數。例如:test.TestLog4j.main(TestLog4j.java:10)。  %c:輸出日誌信息所屬的類目,一般就是所在類的全名。  %M:輸出產生日誌信息的方法名。  %F:輸出日誌消息產生時所在的文件名稱。  %L::輸出代碼中的行號。  %m::輸出代碼中指定的具體日誌信息。  %n:輸出一個回車換行符,Windows平臺爲"\r\n",Unix平臺爲"\n"。  %x:輸出和當前線程相關聯的NDC(嵌套診斷環境),尤爲用到像java servlets這樣的多客戶多線程的應用中。  %%:輸出一個"%"字符。  另外,還能夠在%與格式字符之間加上修飾符來控制其最小長度、最大長度、和文本的對齊方式。如:  1)%20c:指定輸出category的名稱,最小的長度是20,若是category的名稱長度小於20的話,默認的狀況下右對齊。  2)%-20c:"-"號表示左對齊。  3)%.30c:指定輸出category的名稱,最大的長度是30,若是category的名稱長度大於30的話,就會將左邊多出的字符截掉,但小於30的話也不會補空格。  附:Log4j比較全面的配置  Log4j配置文件實現了輸出到控制檯、文件、回滾文件、發送日誌郵件、輸出到數據庫日誌表、自定義標籤等全套功能。  log4j.rootLogger=DEBUG,console,dailyFile,im  log4j.additivity.org.apache=true  # 控制檯(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  # 應用於socket  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 Factor 5  log4j.appender.socket.layout=org.apache.log4j.PatternLayout  log4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n  # Log Factor 5 Appender  log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender  log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000  # 發送日誌到指定郵件  log4j.appender.mail=org.apache.log4j.net.SMTPAppender  log4j.appender.mail.Threshold=FATAL  log4j.appender.mail.BufferSize=10  log4j.appender.mail.From = xxx@mail.com  log4j.appender.mail.SMTPHost=mail.com  log4j.appender.mail.Subject=Log4J Message  log4j.appender.mail.To= xxx@mail.com  log4j.appender.mail.layout=org.apache.log4j.PatternLayout  log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n  # 應用於數據庫  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('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')  log4j.appender.database.layout=org.apache.log4j.PatternLayout  log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n  # 自定義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 = corlin@cybercorlin.net  log4j.appender.im.layout=org.apache.log4j.PatternLayout  log4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
相關文章
相關標籤/搜索