国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - Java中 log4j日志級別配置詳解

Java中 log4j日志級別配置詳解

2021-03-16 12:22炭燒小雞 JAVA教程

這篇文章主要介紹了Java中 log4j日志級別配置詳解,需要的朋友可以參考下

1.1 前言

  說出來真是丟臉,最近被公司派到客戶公司面試外包開發崗位,本來準備了什么redis、rabbitMQ、SSM框架的相關面試題以及自己做過的一些項目回顧,信心滿滿地去面試,結果別人一上來就問到了最近項目使用的日志系統是什么?日志級別是怎么配置的?當時我都蒙X了,平時都是項目經理搭的,我自己也是隨便上網一搜往配置文件一黏貼就OK了。我就這么說完后面試官深深定了我一眼,當時我的內心羞愧到......

1.2 閑話少說,講講日志的發展故事(如果已經了解的可以跳過,直接看1.3日志配置)

  要想對日志技術實現深入了解,我個人建議去看:logback + slf4j。至于日志配置,還是了解log4j比較好,因為目前絕大部分的項目還是使用log4j的。好了,下面開始講講日志的發展故事:

  1999年,Apache開源社區發布了log4j,一時轟動整個程序界,從此成為日志的標準并廣泛為java程序員所使用。隨后Sun公司也在JDK1.4版本時發布了Logging機制(java.util.logging,以下簡稱JUL),但是該機制并未獲得公眾的認可,真是可憐。不久Apache又推出了commons-logging日志框架(能夠讓開發者抽象日志實現方式而不必關注具體使用哪個日志技術,通俗地說就是你要用手機叫滴滴,如果你是在北京你就會叫來北京的滴滴,在香港你就會叫來香港的滴滴),該框架仿佛是對Sun公司的鄙睨,其可以自動查找調用當前環境下的日志技術進行日志輸出,該日志框架可支持log4j或JUL。commons-logging+log4j在其后的很長一段時間內成為了Java日志的經典組合。然而之后commons-logging有一段時間沒更新了,不知道是不是commons-logging當初的設計不夠好,想再優化也比較多困難,為什么這么說呢?因為接下來一個優秀的日志框架slf4j誕生了,該作者(Ceki Gülcü)就是log4j的作者之一,他的slf4j設計上更優雅,并且他還實現了logback技術,也是比log4j更前沿。至此,日志體系由commons-logging+log4j一家獨大的局面開始受到動搖,各種commons-logging+log4j?slf4j+log4j?slf4j+logback?搭配,真是讓人揪心。更恐怖的是,Ceki Gülcü大佬又幫忙優化了log4j,從此世界又多了一項日志技術--log4j2。這是要學騰訊搞微信和QQ嗎,真是666。因此,如果大家想對日志技術深入了解的話,可以去找找logback + slf4j的相關資料。至于配置文件,我認為你就了解下我下面寫的log4j配置詳解就好了,畢竟現在還是比較多公司用log4j框架的。

1.3 進入正題,log4j日志基本配置

1.在項目的classpath下或者resource包下(maven項目)新建一個log4j.properties文件,初始項目配置如下參數就足夠了,更詳細配置可繼

續看1.4 log4j日志級別配置;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#通過根日志記錄器指定日志級別及輸出源
#日志輸出的優先級: debug < info < warn < error < fatal
#定義根日志記錄器的日志級別(info)及輸出源的別名(console,myFile)
#該定義讓日志在控制臺和文件輸出,并且只輸出info級別以上的日志
log4j.rootLogger=info,console,myFile
#######配置輸出源console的具體實現為控制臺輸出#######
#定義輸出源別名console(即根日志記錄器定義的輸出源)
#的實現類是ConsoleAppender(控制臺輸出源)log4j.appender.console=org.apache.log4j.ConsoleAppender
#指定日志輸出格式的格式轉換器為PatternLayout實現類
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#定義日志輸出的具體格式
log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n
#######配置輸出源myFile的具體實現為文件輸出#######
#定義輸出源別名myFile(即根日志記錄器定義的輸出源)
#的實現類是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
#指定日志輸出格式的格式轉換器為PatternLayout實現類
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},則會輸出:
   #20180106144745590
#%p: 輸出日志級別,即DEBUG,INFO,WARN,ERROR,FATAL
   #%-5p:表示字符小于5位,則字符居左(不加“-”號則字符居右),你可以舉一反三
#%c: 日志所在類的全名
#%M: 日志所在方法的名字
#%m: 日志信息
#%n: 輸出一個回車換行符
#%L: 輸出代碼中的行號

2.調用日志測試配置結果。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogPropertiesTest {
 public static void main(String[] args) {
  /*解析非classpath下的配置文件
  String log4jPath=System.getProperty("user.dir")+"\\src\\log\\logProperties\\log4j.properties";
  PropertyConfigurator.configure(log4jPath);*/
  Logger log = LogManager.getLogger(LogPropertiesTest.class);
  log.debug("調試");
  log.info("信息");
  log.warn("警告");
  log.error("錯誤");
  log.fatal("致命錯誤");
 }
}

1.4日志級別配置

  日志級別配置可分為3類,一類如上配置是配置父類日志記錄器的日志級別,第二類是配置子類日志記錄器的日志級別,第三類是配置輸出源(控制臺、文件等)的日志級別。他們的日志級別解析優先級由低到高排列。具體表述原諒我說不清楚,直接
上案例,大家應該能夠懂!

1.如果配置(也必須要配置)了父類日志記錄器(rootLogger)的日志級別(假設是INFO級別),沒有配置子類日志記錄器的日志級別,也沒有配置輸出源的日志級別,則輸出源只能輸出INFO級別以上的;

2.如果配置(也必須要配置)了父類日志記錄器(rootLogger)的日志級別(假設是INFO級別),配置了子類日志記錄器的日志級別(假設是DEBUG級別),沒有配置輸出源的日志級別,則輸出源輸出DEBUG級別以上的;

3.如果配置(也必須要配置)了父類日志記錄器(rootLogger)的日志級別(假設是INFO級別),配置了子類日志記錄器的日志級別(假設是DEBUG級別),配置了輸出源的日志級別(假設是INFO級別),則輸出源輸出INFO級別以上的;

4.如果配置(也必須要配置)了父類日志記錄器(rootLogger)的日志級別(假設是INFO級別),沒有配置子類日志記錄器的日志級別,配置

了輸出源的日志級別(假設是DEBUG級別),則輸出源輸出INFO級別以上的;

因此,從上述的案例中我們可以知道日志記錄器和輸出源輸出日志級別存在2個邏輯關系:

1.輸出源如果沒有定義日志級別,它會繼承最接近它的子類日志記錄器的日志級別;子類日志記錄器沒有定義日志級別,它會繼承最接近它的父類日志記錄器。

2.打印日志時輸出源會根據自身定義的日志級別與最接近它的子類日志記錄器定義的日志級別比較,如果輸出源定義的級別高于子類日志記錄器,則按輸出源定義的日志級別輸出日志,反之則按子類日志記錄器的日志級別輸出。

所以在項目中可以按日下配置方式配置日志級別:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#控制父類日志記錄器的日志級別為info,默認所有模塊下只輸出info級別以上的日志
log4j.rootLogger=info,console
#單獨控制某個模塊下的日志級別為error,只有發生異常的時候才輸出日志
log4j.logger.log.logProperties=error
#單獨控制某個類的日志級別debug,方便輸出調試信息
log4j.logger.log.logProperties.LogPropertiesTest=debug
############# 日志輸出到控制臺 #############
#日志輸出到控制臺使用的api類
log4j.appender.console=org.apache.log4j.ConsoleAppender
#指定當前輸出源的日志級別,有了前面的配置,就不需要配置該項了
#log4j.appender.console.Threshold = info
#指定日志輸出的格式:靈活的格式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#具體格式的內容
log4j.appender.console.layout.ConversionPattern=%d %-2p [%c.%M()] - %m%n

1.5結束語

  到此,相信你日志配置有了基本的掌握了。文中有很多地方可能會有不對的地方,歡迎各位大俠指出。我也是為了能夠深刻理解該技術的配置,才撰文總結,這樣我就會對它有更深層次的理解了。

原文鏈接:http://www.cnblogs.com/tanshaoxiaoji/p/log4j_config.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品第一页在线 | 国产欧美在线观看 | 国产四区| 久久久久久久久国产成人免费 | 超级碰在线观看 | 亚洲日本国产 | 久久精品国产亚洲 | 亚洲精品视频在线免费播放 | 91欧美激情一区二区三区成人 | 日韩欧美国产一区二区三区 | 91.成人天堂一区 | 黄色视屏在线免费观看 | 一级做a爰片性色毛片精油 欧美中文字幕在线观看 | 国产一区二区影院 | 欧美一级一区 | 毛片免费看电影 | 日日干,天天干 | 欧美精品在欧美一区二区少妇 | 亚洲乱码国产乱码精品精的特点 | 国产精品成av人在线视午夜片 | 亚洲午夜在线 | 成av人片在线观看www | 日韩欧美天堂 | 色婷婷av久久久久久久 | 欧美第一网站 | 欧美日韩精品一区二区三区蜜桃 | 91在线免费看 | 免费观看的av | 日韩一区二区三区在线视频 | 蜜桃成人在线视频 | 国产精品剧情一区二区三区 | 日韩超碰在线观看 | 国产精品国产精品国产专区不卡 | 精品国产乱码久久久久久牛牛 | 国产一区二区精品在线观看 | 一区二区三区av | 成人免费视频视频 | 欧美日韩高清一区 | 天堂欧美城网站网址 | 精品国产一区二区三区免费 | 在线观看黄色电影 |