Spring整合log4j日誌

Log4j介紹:

  • 通過使用Log4j,控制日誌信息輸送的目的地可以爲控制檯、文件、數據庫、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;
  • 可以控制每一條日誌的信息內容和信息輸出格式;
  • 通過定義每一條日誌信息的級別,我們能夠更加細緻地控制日誌的生成過程;

日誌級別:

  • OFF關閉了日誌信息
  • FATAL:可能導致應用中止的嚴重事件錯誤
  • ERROR:嚴重錯誤,主要是程序的錯誤
  • WARN:一般警告,比如session丟失
  • INFO:一般要顯示的信息,比如登錄登出
  • DEBUG:程序的調試信息
  • TRACE:比DEBUG更細粒度的事件信息
  • ALL:打開所有級別的日誌

log4j提供了一系列的Appender,允許將日誌輸出到不同的地方,如控制檯、文件、數據庫等。

項目中的應用:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    <scope>runtime</scope>
</dependency>
import org.slf4j.LoggerFactory;

private static Logger logger = LoggerFactory.getLogger(DeviceLoadConfigServiceImpl.class);
logger.warn(LOGGERINFO+"getDevConnectConfigByDeviceUid參數缺失marketId:"+deviceUid);

#Console Log
#log4j根配置語法:
#作用:把指定級別的日誌信息  輸出到指定的一個或多個位置
log4j.rootLogger=DEBUG,INFO,WARN,ERROR , console, file,logDB

# Write to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n

#Write to File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Threshold = INFO
log4j.appender.file.File=${catalina.home}log/provider.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n

#將日誌登錄到MySQL數據庫 
log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.layout = org.apache.log4j.PatternLayout
log4j.appender.logDB.Threshold = ERROR
log4j.appender.logDB.Driver = com.mysql.jdbc.Driver
log4j.appender.logDB.URL = jdbc:mysql://127.0.0.1:3306/gaas?characterEncoding=UTF-8
log4j.appender.logDB.User = root
log4j.appender.logDB.Password = 63594242
log4j.appender.logDB.Sql = INSERT INTO log4j (project_name,create_date,level,category,file_name,thread_name,line,all_category,message)VALUES('saas','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')
#配置某些類輸出級別
log4j.logger.org.springframework.amqp.rabbit.listener.BlockingQueueConsumer=INFO,WARN,ERROR
og4j.logger.org.springframework.core.task.SimpleAsyncTaskExecutor=INFO,WARN,ERROR
#############################################################################################################################################
#①配置根Logger,其語法爲: 
# 
#log4j.rootLogger = [level],appenderName,appenderName2,... 
#level是日誌記錄的優先級,分爲OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL 
##Log4j建議只使用四個級別,優先級從低到高分別是DEBUG,INFO,WARN,ERROR 
#通過在這裏定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關 
#比如在這裏定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被打印出來 
#appenderName就是指定日誌信息輸出到哪個地方。可同時指定多個輸出目的 
################################################################################ 
################################################################################ 
#②配置日誌信息輸出目的地Appender,其語法爲: 
# 
#log4j.appender.appenderName = fully.qualified.name.of.appender.class 
#log4j.appender.appenderName.optionN = valueN 
# 
#Log4j提供的appender有以下幾種: 
#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 = DEBUG:指定日誌消息的輸出最低層次 
# -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 
# -Target = System.err:默認值System.out,輸出到控制檯(err爲紅色,out爲黑色) 
# 
#2)FileAppender選項屬性 
# -Threshold = INFO:指定日誌消息的輸出最低層次 
# -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 
# -File = C:\log4j.log:指定消息輸出到C:\log4j.log文件 
# -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 
# -Encoding = UTF-8:可以指定文件編碼格式 
# 
#3)DailyRollingFileAppender選項屬性 
# -Threshold = WARN:指定日誌消息的輸出最低層次 
# -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 
# -File = C:\log4j.log:指定消息輸出到C:\log4j.log文件 
# -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 
# -DatePattern='.'yyyy-ww:每週滾動一次文件,即每週產生一個新的文件。還可以按用以下參數: 
#              '.'yyyy-MM:每月 
#              '.'yyyy-ww:每週 
#              '.'yyyy-MM-dd:每天 
#              '.'yyyy-MM-dd-a:每天兩次 
#              '.'yyyy-MM-dd-HH:每小時 
#              '.'yyyy-MM-dd-HH-mm:每分鐘 
# -Encoding = UTF-8:可以指定文件編碼格式 
# 
#4)RollingFileAppender選項屬性 
# -Threshold = ERROR:指定日誌消息的輸出最低層次 
# -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 
# -File = C:/log4j.log:指定消息輸出到C:/log4j.log文件 
# -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 
# -MaxFileSize = 100KB:後綴可以是KB,MB,GB.在日誌文件到達該大小時,將會自動滾動.如:log4j.log.1 
# -MaxBackupIndex = 2:指定可以產生的滾動文件的最大數 
# -Encoding = UTF-8:可以指定文件編碼格式 
################################################################################ 
################################################################################ 
#③配置日誌信息的格式(佈局),其語法爲: 
# 
#log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 
#log4j.appender.appenderName.layout.optionN = valueN 
# 
#Log4j提供的layout有以下幾種: 
#5)org.apache.log4j.HTMLLayout(以HTML表格形式佈局) 
#6)org.apache.log4j.PatternLayout(可以靈活地指定佈局模式) 
#7)org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串) 
#8)org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息) 
#9)org.apache.log4j.xml.XMLLayout(以XML形式佈局) 
# 
#5)HTMLLayout選項屬性 
# -LocationInfo = TRUE:默認值false,輸出java文件名稱和行號 
# -Title=Struts Log Message:默認值 Log4J Log Messages 
# 
#6)PatternLayout選項屬性 
# -ConversionPattern = %m%n:格式化指定的消息(參數意思下面有) 
# 
#9)XMLLayout選項屬性 
# -LocationInfo = TRUE:默認值false,輸出java文件名稱和行號 
# 
#Log4J採用類似C語言中的printf函數的打印格式格式化日誌信息,打印參數如下: 
# %m 輸出代碼中指定的消息 
# %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL 
# %r 輸出自應用啓動到輸出該log信息耗費的毫秒數 
# %c 輸出所屬的類目,通常就是所在類的全名 
# %t 輸出產生該日誌事件的線程名 
# %n 輸出一個回車換行符,Windows平臺爲“\r\n”,Unix平臺爲“\n” 
# %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式 
#    如:%d{yyyy年MM月dd日 HH:mm:ss,SSS},輸出類似:2012年01月05日 22:10:28,921 
# %l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數 
#    如:Testlog.main(TestLog.java:10) 
# %F 輸出日誌消息產生時所在的文件名稱 
# %L 輸出代碼中的行號 
# %x 輸出和當前線程相關聯的NDC(嵌套診斷環境),像java servlets多客戶多線程的應用中 
# %% 輸出一個"%"字符 
# 
# 可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如: 
#  %5c: 輸出category名稱,最小寬度是5,category<5,默認的情況下右對齊 
#  %-5c:輸出category名稱,最小寬度是5,category<5,"-"號指定左對齊,會有空格 
#  %.5c:輸出category名稱,最大寬度是5,category>5,就會將左邊多出的字符截掉,<5不會有空格 
#  %20.30c:category名稱<20補空格,並且右對齊,>30字符,就從左邊交遠銷出的字符截掉 
################################################################################ 
################################################################################ 
#④指定特定包的輸出特定的級別 
#log4j.logger.org.springframework=DEBUG 
################################################################################ 

#OFF,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB,ALL 
#log4j.rootLogger =info, console, file

##輸出到控制檯 
#log4j.appender.systemOut = org.apache.log4j.ConsoleAppender 
#log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout 
#log4j.appender.systemOut.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
#log4j.appender.systemOut.Threshold = DEBUG 
#log4j.appender.systemOut.ImmediateFlush = TRUE 
#log4j.appender.systemOut.Target = System.out 
#
##輸出到文件 
#log4j.appender.logFile = org.apache.log4j.FileAppender 
#log4j.appender.logFile.layout = org.apache.log4j.PatternLayout 
#log4j.appender.logFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
#log4j.appender.logFile.Threshold = DEBUG 
#log4j.appender.logFile.ImmediateFlush = TRUE 
#log4j.appender.logFile.Append = TRUE 
#log4j.appender.logFile.File = ${catalina.home}/log/provider.log
#log4j.appender.logFile.Encoding = UTF-8 
#
##按DatePattern輸出到文件 
#log4j.appender.logDailyFile = org.apache.log4j.DailyRollingFileAppender 
#log4j.appender.logDailyFile.layout = org.apache.log4j.PatternLayout 
#log4j.appender.logDailyFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
#log4j.appender.logDailyFile.Threshold = DEBUG 
#log4j.appender.logDailyFile.ImmediateFlush = TRUE 
#log4j.appender.logDailyFile.Append = TRUE 
#log4j.appender.logDailyFile.File =  ${catalina.home}/log/DailyFile/log4j 
#log4j.appender.logDailyFile.DatePattern = '.'yyyy-MM-dd-HH-mm'.log' 
#log4j.appender.logDailyFile.Encoding = UTF-8 
#
##設定文件大小輸出到文件 
#log4j.appender.logRollingFile = org.apache.log4j.RollingFileAppender 
#log4j.appender.logRollingFile.layout = org.apache.log4j.PatternLayout 
#log4j.appender.logRollingFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
#log4j.appender.logRollingFile.Threshold = DEBUG 
#log4j.appender.logRollingFile.ImmediateFlush = TRUE 
#log4j.appender.logRollingFile.Append = TRUE 
#log4j.appender.logRollingFile.File = ${catalina.home}/log/RollingFile/log4j.log 
#log4j.appender.logRollingFile.MaxFileSize = 1MB 
#log4j.appender.logRollingFile.MaxBackupIndex = 10 
#log4j.appender.logRollingFile.Encoding = UTF-8 

#用Email發送日誌 
#log4j.appender.logMail = org.apache.log4j.net.SMTPAppender 
#log4j.appender.logMail.layout = org.apache.log4j.HTMLLayout 
#log4j.appender.logMail.layout.LocationInfo = TRUE 
#log4j.appender.logMail.layout.Title = WondWare Mail LogFile 
#log4j.appender.logMail.Threshold = ERROR 
#log4j.appender.logMail.SMTPDebug = FALSE 
#log4j.appender.logMail.SMTPHost = smtp.163.com 
#log4j.appender.logMail.From = [email protected]
#log4j.appender.logMail.To = [email protected]
##log4j.appender.logMail.Cc = [email protected] 
##log4j.appender.logMail.Bcc = [email protected] 
#log4j.appender.logMail.SMTPUsername = [email protected]
#log4j.appender.logMail.SMTPPassword = 3341566
#log4j.appender.logMail.Subject = Log4j Log Messages 
##log4j.appender.logMail.BufferSize = 1024 
#log4j.appender.logMail.SMTPAuth = TRUE 

#將日誌登錄到MySQL數據庫 
#log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender 
#log4j.appender.logDB.layout = org.apache.log4j.PatternLayout 
#log4j.appender.logDB.Driver = com.mysql.jdbc.Driver 
#log4j.appender.logDB.URL = jdbc:mysql://139.196.252.205:3306/gaas?characterEncoding=UTF-8
#log4j.appender.logDB.User = root 
#log4j.appender.logDB.Password = 63594242
#log4j.appender.logDB.Sql = INSERT INTOT log4j (project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values('Struts2','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')

#log4j.rootCategory=DEBUG,INFO, stdout , R 
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
#log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 
#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
##log4j.appender.R.File=e:\\test\\avatar.log 
### linux logs file path 
##log4j.appender.R.File=${com.hsinghsu.testSSH.webapp.root}/log/testlog.log 
### Windows logs file path 
#log4j.appender.R.File=${catalina.home}/log/providers.log
#log4j.appender.R.layout=org.apache.log4j.PatternLayout 
##log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 
##log4j.logger.com.neusoft=DEBUG 
##log4j.logger.com.opensymphony.oscache=ERROR 
#log4j.logger.net.sf.navigator=INFO 
##log4j.logger.org.apache.commons=ERROR 
##log4j.logger.org.apache.struts=WARN 
##log4j.logger.org.displaytag=ERROR 
## 
#log4j.logger.org.springframework=INFO 
## 
##log4j.logger.com.ibatis.db=WARN 
##log4j.logger.org.apache.velocity=FATAL 
##log4j.logger.com.canoo.webtest=WARN 
##log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 
##log4j.logger.org.hibernate=DEBUG 
#log4j.logger.org.hibernate=INFO 
##log4j.logger.org.logicalcobwebs=WARN

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章