一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java自定義日志輸出文件(log4j日志文件輸出多個自定義日志文件)

java自定義日志輸出文件(log4j日志文件輸出多個自定義日志文件)

2019-10-30 17:09java教程網 JAVA教程

打印日志的在程序中是必不可少的,如果需要將不同的日志打印到不同的地方,則需要定義不同的Appender,然后定義每一個Appender的日志級別、打印形式和日志的輸出路徑,下面看一個示例吧

log4j輸出多個自定義日志文件

如果在實際應用中需要輸出獨立的日志文件,怎樣才能把所需的內容從原有日志中分離,形成單獨的日志文件呢?

先看一個常見的log4j.properties文件,它是在控制臺和test.log文件中記錄日志:

 

復制代碼代碼如下:


log4j.rootLogger=DEBUG, stdout, logfile 

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=log/test.log
log4j.appender.logfile.MaxFileSize=128MB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

如果在同一類中需要輸出多個日志文件呢?其實道理是一樣的,先在Test.java中定義:

 

復制代碼代碼如下:


private static Log logger1 = LogFactory.getLog("mylogger1");

 

private static Log logger2 = LogFactory.getLog("mylogger2");

 


log4j.properties中配置如下:

 

復制代碼代碼如下:


log4j.logger.mylogger1=DEBUG,test1
log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=log/test1.log
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

log4j.logger.mylogger2=DEBUG,test2
log4j.appender.test2=org.apache.log4j.FileAppender
log4j.appender.test2.File=log/test2.log
log4j.appender.test2.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

不同日志要使用不同的logger(如輸出到test1.log的要用logger1.info("abc"))。

還有一個問題,就是這些自定義的日志默認是同時輸出到log4j.rootLogger所配置的日志中的,如何能只讓它們輸出到自己指定的日志中呢?別急,這里有個開關:

log4j.additivity. mylogger1 = false

它用來設置是否同時輸出到log4j.rootLogger所配置的日志中,設為false就不會輸出到其它地方了。

但是這種方式有個小缺陷,那就是打印的日志中類名只能是mylogger或者mylogger2。

2 動態配置路徑
若程序需要的日志路徑需要不斷的變化,而又不可能每次都去改配置文件,此時可以利用環境變量來解決。

log4j的配置如下:

 

復制代碼代碼如下:


log4j.rootLogger=DEBUG,INFOLOG,DEBUGLOG

 

#info log
log4j.appender.INFOLOG =org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFOLOG.File= ${log.dir}/${log.info.file}
log4j.appender.INFOLOG.DatePattern=.yyyy-MM-dd
log4j.appender.INFOLOG.Threshold=INFO
log4j.appender.INFOLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.INFOLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n 

#debug log
log4j.appender.DEBUGLOG =org.apache.log4j.RollingFileAppender
log4j.appender.DEBUGLOG.File= ${log.dir}/${log.debug.file}
log4j.appender.DEBUGLOG.Threshold=DEBUG
log4j.appender.DEBUGLOG.MaxFileSize=128MB
log4j.appender.DEBUGLOG.MaxBackupIndex=3
log4j.appender.DEBUGLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUGLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

此時,在使用log打印日志之前,需要利用System定義日志的輸出路徑和文件名的環境變量:

 

復制代碼代碼如下:


System.setProperty(“log.dir”, logDir);

 

System.setProperty(“log.info.file”, infoLogFileName);

System.setProperty(“log.debug.file”, debugLogFileName);

 

附:Pattern參數的格式含義

%c 輸出日志信息所屬的類的全名

%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },輸出類似:2013-8-19- 22:10:28

%f 輸出日志信息所屬的類的類名

%l 輸出日志事件的發生位置,即輸出日志信息的語句處于它所在的類的第幾行

%m 輸出代碼中指定的信息,如log(message)中的message

%n 輸出一個回車換行符,Windows平臺為“/r/n”,Unix平臺為“/n”

%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推

%r 輸出自應用啟動到輸出該日志信息所耗費的毫秒數

%t 輸出產生該日志事件的線程名

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本免费在线观看视频 | 亚洲国产中文字幕在线视频综合 | 99性视频| 动漫精品午夜在线播放 | 色综合伊人色综合网亚洲欧洲 | 欧美xingai | 国产成人在线播放视频 | 国产成人a∨麻豆精品 | 成品人视频免费观看 | 国产a一级毛片爽爽影院 | 日本ccc三级| 亚洲天天综合网 | 国产精品日韩在线观看 | 黑人video粗暴日本 | 久久学生精品国产自在拍 | 男人把大ji巴放进女人小说 | 国产小视频在线免费 | 九九热这里只有精品视频免费 | 女同学高中你下面好紧 | 亚洲精品www久久久久久久软件 | 欧美一级欧美三级 | 亚洲爱视频 | 国产成人免费片在线视频观看 | 500福利第一巨人导航 | 成人福利在线 | 国产成人免费在线观看 | 欧美福利在线播放 | 第一次破苞h| 欧美1级 | 免费看www | 国产福利片在线 易阳 | sese在线播放 | 丝瓜视频成人在线观看 | 韩国丽卡三级作品 | 麻豆网站在线免费观看 | 青青久久精品国产 | 久草在在线免视频在线观看 | 好深快点再快点好爽视频 | 日本三级做a全过程在线观看 | 小黄文污到你湿 | 日本中文字幕在线观看视频 |