寫在前面:
項目中由於為了查看項目相關調試信息,使用System.out.println()直接在控制台打印不是很方便,故一般配置log4j,它可以將信息輸出到文件中。
步驟:
1.導入jar包:log4j-1.2.8.jar
2.編寫log4j配置文件:log4j.properties
### set log levels - for more verbose logging change 'info' to 'debug' ### #這里指定了輸出info以上級別的信息,並可以輸出到控制台stdout,以及file中 log4j.rootLogger=info,stdout,file ### direct log messages to stdout ### #控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### #文件 只輸出到一個文件中 log4j.appender.logFile=org.apache.log4j.FileAppender log4j.appender.logFile.File=E:/logs/mylog.txt log4j.appender.logFile.encoding=UTF-8 log4j.appender.logFile.layout=org.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n ### the file overd some size will create a new log file ### #滾動文件 可以設置文件的大小(超過大小的自動創建新的日志文件來存放),以及文件的個數(文件個數超過后不再重新創建,會將新的內容從第一個文件開始存放) log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.Append=true log4j.appender.file.File=E:/logs/log.txt log4j.appender.file.encoding=UTF-8 log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n ### error information ### #文件 只輸出error信息到此文件
log4j.appender.errorfile=org.apache.log4j.FileAppender log4j.appender.errorfile.File=E:/logs/errlog.txt log4j.appender.errorfile.Threshold=ERROR log4j.appender.errorfile.Append=false log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy/MM/dd HH\:mm\:ss,SSS} %5p %c{1}\:%L - %m%n
3.在web.xml中配置log4j
如果直接將log4j.properties文件放在src路徑下,那么就不需要在web.xml文件配置相關信息了,項目會自動加載的
反之就需要配置(利用spring的監聽器來加載,此時log4j.properties的位置可以放到其他地方):
<!-- 在ssh中,可以使用spring的監聽器來來加載 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:config/log4j.properties</param-value> </context-param> <!-- 使用spring的監聽器,當應用啟動時來讀取log4j的配置文件 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
4.程序中使用log4j
public class Test { //每個類中加上這個 public static Logger logger=Logger.getLogger(Test.class); public static void main(String[] args) { logger.info("小蚊子qq:513996980"); logger.info("小王啊哈方法看婦科小王啊哈方法看婦科小王啊哈"); logger.error("對方水電費"); int a = 10; try{ int b = a/0; }catch(Exception e){ //將異常信息打印到日志文件中 //logger.error(e.getStackTrace()[0]); //logger.error(e.getMessage()); logger.error(getTrace(e)); } } //封裝了異常信息打印的方法 public static String getTrace(Throwable t) { StringWriter stringWriter= new StringWriter(); PrintWriter writer= new PrintWriter(stringWriter); t.printStackTrace(writer); StringBuffer buffer= stringWriter.getBuffer(); return buffer.toString(); } }
運行之后,就可以看到控制台 以及你的日志文件中 會有相關的打印信息啦。。。。。
對於想要讓一些功能單獨打印日志文件的,也可以進行相關的設置
### send mail information ###
log4j.logger.mailLogger=info,M
log4j.additivity.mailLogger = false
log4j.appender.M = org.apache.log4j.DailyRollingFileAppender
log4j.appender.M.File = d:/mail.log
log4j.appender.M.DatePattern = '.'yyyy-MM-dd
log4j.appender.M.Append = true
log4j.appender.M.layout = org.apache.log4j.PatternLayout
log4j.appender.M.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p %c{5}:%L - %m%n
在相關的類中使用以下方式獲取就好了
//打印指定類的日志到指定文件 private static Logger mLogger = Logger.getLogger("mailLogger");
交流群:527038646 嘻嘻嘻