生活随笔
收集整理的這篇文章主要介紹了
Java中log4j控制写入日志开关
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?本文原文出自我的個人網站【思考者日記】原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。
?
上篇說到tomcat jndi(連接池)的使用方法,這次的項目里還使用到了一個日志開關配置,主要是方便客戶查看。
我們平時的日志一般使用最多的就是java.util.logger和log4j了。
這里因為要在外部靈活配置,所以我們采用log4j來控制。
首先我們需要log4j.jar和log4j.properties
?
現在我們在程序中寫日志輸出
引入import org.apache.log4j.Logger;
?
Logger?logger?=?Logger.getLogger("這里的名字隨便取,一般是本類類名,這里是CheckUserServlet");????logger.info("hello,world");???
接下來,關鍵的了。
配置log4j.properties文件,如下
?
log4j.logger.CheckUserServlet=INFO,A???#?log4j.logger.CheckUserServlet里的CheckUserServlet是我剛在程序里取的名字???log4j.appender.A=org.apache.log4j.DailyRollingFileAppender???log4j.appender.A.File=d:/test.log???#這里將日志輸出到D盤的test.log里,具體配置大家看下面的詳細說明?,還可以用${webapp.root}表示tomcat根目錄,具體大家試試吧?log4j.appender.A.layout=org.apache.log4j.PatternLayout???log4j.appender.A.layout.ConversionPattern=%d%m%n???
現在我們就可以將日志輸出到D盤的test.log文件里了。
?
但是,要關閉日志寫入,應該怎么辦啊?
除了上面的5種級別,我們還可以設置成這樣:
?
log4j.logger.CheckUserServlet=INFO,A???
將這里的info級別設置成OFF,這樣就可以關閉日志寫入啦。
當然上面的大家可以靈活配置,配置成多個日志輸出的,只要增加程序Logger.getLogger方法,里面的名字另起一個即可,再在log4j.properties里多寫一段上面的配置,改掉里面的名字,這樣就可以輸出不同的日志文件了。
?
下面是log4j配置里的說明:
?
#將等級為debug的日志信息輸出到stdout這個目的地???#等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL???#Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG???log4j.rootLogger=INFO,stdout??????#定義名為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?輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。???#[QC]是log信息的開頭,可以為任意字符,一般為項目簡稱。???log4j.appender.stdout.layout.ConversionPattern=[QC]?%p?[%t]?%C.%M(%L)?|?%m%n??? ?本文原文出自我的個人網站【思考者日記】原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。
轉載于:https://blog.51cto.com/shuyangyang/1163245
總結
以上是生活随笔為你收集整理的Java中log4j控制写入日志开关的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。