搭建完maven+SpringMVC以後,我們還需要添加日誌功能,方便記錄應用在應用中產生的日誌信息。
1、添加依賴包:依賴中除了對slf4j依賴外還有對郵件插件的依賴。當遇到報錯的時候可以發送郵件到我們指定的郵箱
<!-- ============== log begin ============== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!-- ============== log end ============== -->
<!-- 發送日誌到郵箱依賴 -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<!-- 發送日誌到郵箱依賴 -->
2、新建log4j.properties文件,必須在resources目錄下
3、log4j.properties內容
### set log levels ###
log4j.rootLogger = INFO,DEBUG, console, infoFile, errorFile ,debugfile,mail
LocationInfo=true
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
##
log4j.appender.console.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
log4j.appender.infoFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infoFile.Threshold = INFO
log4j.appender.infoFile.File = D:/logs/log
log4j.appender.infoFile.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.infoFile.Append=true
log4j.appender.infoFile.layout = org.apache.log4j.PatternLayout
log4j.appender.infoFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorFile.Threshold = ERROR
log4j.appender.errorFile.File = D:/logs/error
log4j.appender.errorFile.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.errorFile.Append=true
log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
#log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.debugfile.Threshold = DEBUG
#log4j.appender.debugfile.File = D:/logs/debug
#log4j.appender.debugfile.DatePattern = '.'yyyy-MM-dd'.log'
#log4j.appender.debugfile.Append=true
#log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
#log4j.appender.debugfile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
##mail
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=ERROR
log4j.appender.mail.BufferSize=1
log4j.appender.mail.From [email protected]
log4j.appender.mail.SMTPHost=mail.qq.com
log4j.appender.mail.Subject=Log4J Message
[email protected]
log4j.appender.mail.SMTPUsername=123
log4j.appender.mail.SMTPPassword=123456
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
#log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
4、上面內容的解釋:
配置詳情解釋:
------------------------------------------------------------------------------------------------------
Appender 爲日誌輸出目的地,Log4j提供的appender有以下幾種:
org.apache.log4j.ConsoleAppender(控制檯),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件),
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
Layout:日誌輸出格式,Log4j提供的layout有以下幾種
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)
Log4J採用類似C語言中的printf函數的打印格式格式化日誌信息:
-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字符,就從左邊較遠輸出的字符截掉。
---------------------------------------------------------------------------------------------------------
http://blog.csdn.net/qq_30175203/article/details/52084127
---------------------------------------------------------------------------------------------------------
################################################################################
#①配置根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:默認值 Log4JLog 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(嵌套診斷環境),像javaservlets多客戶多線程的應用中
#%% 輸出一個"%"字符
#
# 可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:
# %5c: 輸出category名稱,最小寬度是5,category<5,默認的情況下右對齊
# %-5c:輸出category名稱,最小寬度是5,category<5,"-"號指定左對齊,會有空格
# %.5c:輸出category名稱,最大寬度是5,category>5,就會將左邊多出的字符截掉,<5不會有空格
# %20.30c:category名稱<20補空格,並且右對齊,>30字符,就從左邊交遠銷出的字符截掉
輸出結果爲:[2017-12-07 14:18:33,149]-[INFO]:你好! [ Test.java:15 ]
目前發送到郵箱這個有的還不能用,我自己本地測試公司郵箱是可以發送到自己公司郵箱,但是使用qq有限卻無法發送過去報鏈接失敗:查過原因:
一下是網上找的:但是我也不知道怎麼去放開,試了好多遍都不行。