新聞中心
1.1 前言
說出來真是丟臉,最近被公司派到客戶公司面試外包開發(fā)崗位,本來準備了什么redis、rabbitMQ、SSM框架的相關(guān)面試題以及自己做過的一些項目回顧,信心滿滿地去面試,結(jié)果別人一上來就問到了最近項目使用的日志系統(tǒng)是什么?日志級別是怎么配置的?當時我都蒙X了,平時都是項目經(jīng)理搭的,我自己也是隨便上網(wǎng)一搜往配置文件一黏貼就OK了。我就這么說完后面試官深深定了我一眼,當時我的內(nèi)心羞愧到......
1.2 閑話少說,講講日志的發(fā)展故事(如果已經(jīng)了解的可以跳過,直接看1.3日志配置)
要想對日志技術(shù)實現(xiàn)深入了解,我個人建議去看:logback + slf4j。至于日志配置,還是了解log4j比較好,因為目前絕大部分的項目還是使用log4j的。好了,下面開始講講日志的發(fā)展故事:
1999年,Apache開源社區(qū)發(fā)布了log4j,一時轟動整個程序界,從此成為日志的標準并廣泛為java程序員所使用。隨后Sun公司也在JDK1.4版本時發(fā)布了Logging機制(java.util.logging,以下簡稱JUL),但是該機制并未獲得公眾的認可,真是可憐。不久Apache又推出了commons-logging日志框架(能夠讓開發(fā)者抽象日志實現(xiàn)方式而不必關(guān)注具體使用哪個日志技術(shù),通俗地說就是你要用手機叫滴滴,如果你是在北京你就會叫來北京的滴滴,在香港你就會叫來香港的滴滴),該框架仿佛是對Sun公司的鄙睨,其可以自動查找調(diào)用當前環(huán)境下的日志技術(shù)進行日志輸出,該日志框架可支持log4j或JUL。commons-logging+log4j在其后的很長一段時間內(nèi)成為了Java日志的經(jīng)典組合。然而之后commons-logging有一段時間沒更新了,不知道是不是commons-logging當初的設(shè)計不夠好,想再優(yōu)化也比較多困難,為什么這么說呢?因為接下來一個優(yōu)秀的日志框架slf4j誕生了,該作者(Ceki Gülcü)就是log4j的作者之一,他的slf4j設(shè)計上更優(yōu)雅,并且他還實現(xiàn)了logback技術(shù),也是比log4j更前沿。至此,日志體系由commons-logging+log4j一家獨大的局面開始受到動搖,各種commons-logging+log4j?slf4j+log4j?slf4j+logback?搭配,真是讓人揪心。更恐怖的是,Ceki Gülcü大佬又幫忙優(yōu)化了log4j,從此世界又多了一項日志技術(shù)--log4j2。這是要學騰訊搞微信和QQ嗎,真是666。因此,如果大家想對日志技術(shù)深入了解的話,可以去找找logback + slf4j的相關(guān)資料。至于配置文件,我認為你就了解下我下面寫的log4j配置詳解就好了,畢竟現(xiàn)在還是比較多公司用log4j框架的。
1.3 進入正題,log4j日志基本配置
1.在項目的classpath下或者resource包下(maven項目)新建一個log4j.properties文件,初始項目配置如下參數(shù)就足夠了,更詳細配置可繼
續(xù)看1.4 log4j日志級別配置;
#通過根日志記錄器指定日志級別及輸出源 #日志輸出的優(yōu)先級: debug < info < warn < error < fatal #定義根日志記錄器的日志級別(info)及輸出源的別名(console,myFile) #該定義讓日志在控制臺和文件輸出,并且只輸出info級別以上的日志 log4j.rootLogger=info,console,myFile #######配置輸出源console的具體實現(xiàn)為控制臺輸出####### #定義輸出源別名console(即根日志記錄器定義的輸出源) #的實現(xiàn)類是ConsoleAppender(控制臺輸出源)log4j.appender.console=org.apache.log4j.ConsoleAppender #指定日志輸出格式的格式轉(zhuǎn)換器為PatternLayout實現(xiàn)類 log4j.appender.console.layout=org.apache.log4j.PatternLayout #定義日志輸出的具體格式 log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n #######配置輸出源myFile的具體實現(xiàn)為文件輸出####### #定義輸出源別名myFile(即根日志記錄器定義的輸出源) #的實現(xiàn)類是RollingFileAppender(文件輸出源)log4j.appender.myFile=org.apache.log4j.RollingFileAppender #定義日志文件的存儲路徑 log4j.appender.myFile.File=src/log/logProperties/log4j.log #定義日志文件的大小 log4j.appender.myFile.MaxFileSize=1024kb #定義日志文件最多生成幾個(從0開始算1個,即此處最多3個文件) #超過該大小則會覆蓋前面生成的文件 log4j.appender.myFile.MaxBackupIndex=2 #指定日志輸出格式的格式轉(zhuǎn)換器為PatternLayout實現(xiàn)類 log4j.appender.myFile.layout=org.apache.log4j.PatternLayout #定義日志輸出的具體格式 log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n #######輸出格式解釋####### #%d: 日志打印的時間點,默認格式為ISO8601,也可以另外指定格式, #定義如下: %d{yyy年MM月dd日 HH時mm分ss秒SSS},則會輸出: #2018年01月06日 14時47分45秒590 #%p: 輸出日志級別,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL #%-5p:表示字符小于5位,則字符居左(不加“-”號則字符居右),你可以舉一反三 #%c: 日志所在類的全名 #%M: 日志所在方法的名字 #%m: 日志信息 #%n: 輸出一個回車換行符 #%L: 輸出代碼中的行號
網(wǎng)站欄目:Java中l(wèi)og4j日志級別配置詳解-創(chuàng)新互聯(lián)
當前URL:http://fisionsoft.com.cn/article/ddooch.html