麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

使用slf4j和Log4j構建日志

2019-11-10 19:34:15
字體:
來源:轉載
供稿:網友

使用slf4j和Log4j構建日志

SLF4J,即簡單日志門面(Simple Logging Facade for java),不是具體的日志解決方案,它只服務于各種各樣的日志系統。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志系統。

實際上,SLF4J所提供的核心API是一些接口以及一個LoggerFactory的工廠類。從某種程度上,SLF4J有點類似JDBC,不過比JDBC更簡單,在JDBC中,你需要指定驅動程序,而在使用SLF4J的時候,不需要在代碼中或配置文件中指定你打算使用那個具體的日志系統。如同使用JDBC基本不用考慮具體數據庫一樣,SLF4J提供了統一的記錄日志的接口,只要按照其提供的方法記錄即可,最終日志的格式、記錄級別、輸出方式等通過具體日志系統的配置來實現,因此可以在應用中靈活切換日志系統。

如果你開發的是類庫或者嵌入式組件,那么就應該考慮采用SLF4J,因為不可能影響最終用戶選擇哪種日志系統。在另一方面,如果是一個簡單或者獨立的應用,確定只有一種日志系統,那么就沒有使用SLF4J的必要。假設你打算將你使用log4j的產品賣給要求使用JDK 1.4 Logging的用戶時,面對成千上萬的log4j調用的修改,相信這絕對不是一件輕松的事情。但是如果開始便使用SLF4J,那么這種轉換將是非常輕松的事情。

--------正式開始

簡單的JAVA工程

JAR包 下載地址:https://www.slf4j.org/和http://logging.apache.org/log4j/1.2/

log4j-1.2.17.jar  slf4j-api-1.7.22.jar   slf4j-log4j12-1.7.22.jar

log4j.PRoperties配置文件

最近使用log4j寫log時候發現網上的寫的都是千篇一律,寫的好的嘛不全,寫的全一點的嘛沒有一點格式,看著累。這里把網上收集到的整理了一下,并且全部都在機器上測試成功了。

##等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF則不打出任何信息,#如果配置為INFO這樣只顯示INFO, WARN, ERROR的log信息,而DEBUG信息不會被顯示# 此句為將等級為ALL的日志信息輸出到stdout和E這兩個目的地log4j.rootLogger=ALL,stdout,E##此句為定義名為stdout的輸出端是哪種類型,可以是#org.apache.log4j.ConsoleAppender(控制臺),#org.apache.log4j.FileAppender(文件),#org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件),#org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)#org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)#log4j.appender.stdout=org.apache.log4j.ConsoleAppender   ##此句為定義名為stdout的輸出端的layout是哪種類型,可以是#org.apache.log4j.HTMLLayout(以HTML表格形式布局),#org.apache.log4j.PatternLayout(可以靈活地指定布局模式),#org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),#org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等信息)#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  ##如果使用pattern布局就要指定的打印信息的具體格式ConversionPattern,打印參數如下:#%m 輸出代碼中指定的消息#%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL#%r 輸出自應用啟動到輸出該log信息耗費的毫秒數#%c 輸出所屬的類目,通常就是所在類的全名#%t 輸出產生該日志事件的線程名#%n 輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n”#%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921#%l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。#[PPL]是log信息的開頭,可以為任意字符,一般為項目簡稱。#log4j.appender.stdout.layout.ConversionPattern=[PPL] %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %C.%M(%L) | %m%n ###org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)log4j.appender.E = org.apache.log4j.DailyRollingFileAppender#定義名為R的輸出端的文件名為C:/tmp/logs.loglog4j.appender.E.File = C://tmp//logs.log#默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容log4j.appender.E.Append = true#可以指定文件編碼格式log4j.appender.E.Encoding = UTF-8#指定日志消息的輸出最低層次log4j.appender.E.Threshold = DEBUG# -DatePattern='.'yyyy-ww:每周滾動一次文件,即每周產生一個新的文件。還可以按用以下參數: #              '.'yyyy-MM:每月 #              '.'yyyy-ww:每周 #              '.'yyyy-MM-dd:每天 #              '.'yyyy-MM-dd-a:每天兩次 #              '.'yyyy-MM-dd-HH:每小時 #              '.'yyyy-MM-dd-HH-mm:每分鐘 #log4j.appender.E.DatePattern='.'yyyy-MM-ddlog4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern =[PPL] %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %C.%M(%L) | %m%n ################################################################################ ##                               以下是參考示例                                                     #### ################################################################################ #①配置根Logger,其語法為: # #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日志記錄的優先級,分為OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL ##Log4j建議只使用四個級別,優先級從低到高分別是DEBUG,INFO,WARN,ERROR #通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關 #比如在這里定義了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來 #appenderName就是指定日志信息輸出到哪個地方??赏瑫r指定多個輸出目的 ################################################################################ ################################################################################ #②配置日志信息輸出目的地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 =ALL,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB #輸出到控制臺 #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 = ../Struts2/WebRoot/log/File/log4j_Struts.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 = ../Struts2/WebRoot/log/DailyFile/log4j_Struts #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 = ../Struts2/WebRoot/log/RollingFile/log4j_Struts.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 = Struts2 Mail LogFile #log4j.appender.logMail.Threshold = DEBUG #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 = xly3000 #log4j.appender.logMail.SMTPPassWord = 1234567 #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://127.0.0.1:3306/xly #log4j.appender.logDB.User = root #log4j.appender.logDB.Password = 123456 #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')##測試代碼

package com.ppl.test;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Slf4jTest {	Logger logger = LoggerFactory.getLogger(Slf4jTest.class);		@Test	public void test1(){				logger.info("abcdef");		logger.debug("debug");			}}測試結果

[PPL] 2017-02-08 20:56:59 INFO [main] com.ppl.test.Slf4jTest.test1(14) | abcdef[PPL] 2017-02-08 20:56:59 DEBUG [main] com.ppl.test.Slf4jTest.test1(15) | debug


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产最新网站 | 成人国产精品久久 | 免费中文视频 | 欧美14一15sex性hd | 中文字幕在线观看www | 天海翼无删减av三级在线观看 | 中午字幕无线码一区2020 | 欧美成人一区二区三区电影 | 99热草 | 日本网站一区二区三区 | 国产91九色视频 | 亚洲午夜天堂吃瓜在线 | 天天曰夜夜操 | 国产高潮失禁喷水爽到抽搐视频 | 久久久久免费精品国产小说色大师 | 97视频| 国产精品99久久久久久久vr | 国产精品久久久久av | 一级电影在线免费观看 | 暖暖免费观看高清完整版电影 | 26uuu成人人网图片 | 全黄性色大片 | 黄色99视频 | 久久久久久亚洲国产精品 | 久久久精品视频免费看 | 国产精品久久久久久久久久久久久久久久 | 亚洲性视频 | 中文字幕在线观看1 | 无码专区aaaaaa免费视频 | va毛片| 天天夜夜操操 | 国产午夜精品一区二区三区视频 | 亚洲精品午夜在线 | 2021免费日韩视频网 | 国产无遮挡一区二区三区毛片日本 | 欧美黄成人免费网站大全 | 中国av免费在线观看 | hd porn 4k video xhicial| 国产黄色免费网站 | 久久久免费电影 | 中文字幕欧美视频 |