我們平時的日志一般使用最多的就是java.util.logger和log4j了。
這裡因為要在外部靈活配置,所以我們采用log4j來控制。
首先我們需要log4j.jar和log4j.properties
現在我們在程序中寫日志輸出
引入import org.apache.log4j.Logger;
Logger logger = Logger.getLogger("這裡的名字隨便取,一般是本類類名,這裡是CheckUserServlet"); //Log4j中將要輸出的Log信息定義了5種級別,依次為DEBUG、INFO、WARN、ERROR和FATAL,當輸出時,只有級別高過配置中規定的級別的信息才能真正的輸出,這樣就很方便的來配置不同情況下要輸出的內容,而不需要更改代碼 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