Log4j tomcat下日志管理,解决日志文件过大无法清理问题
1.log4j.properties配置文件如下
# Global logging configuration log4j.rootLogger=info, stdout, RollingFile #log4j.rootLogger=WARN, stdout
#Threshold 设置为OFF时控制台不再输出信息
# Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold=OFF log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss:SSS} [%p]-[%c] %m%n #${catalina.base}指向每个Tomcat目录私有信息的位置,就是conf、logs、webapps的父目录。 #File 指定消息输出到RollingFile.log文件中 #RollingFile (文件大小到达指定尺寸的时候产生一个新的文件) log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender log4j.appender.RollingFile.File = ${catalina.base}/logs/RollingFile.log log4j.appender.RollingFile.MaxFileSize=100MB log4j.appender.RollingFile.MaxBackupIndex=3 log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
MaxFileSize=100MB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到RollingFile.log.1文件中。
MaxBackupIndex=3:指定可以产生的滚动文件的最大数,例如,设为2则可以产生RollingFile.log.1,RollingFile.log.2两个滚动文件和一个RollingFile.log文件。
Log4j中提供的Appender主要有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
2.将控制台异常详细信息保存在日志中
try { //执行业务 } catch (Exception e) { e.printStackTrace(); log.info(getTraceString(e)); } //异常信息转换字符串 public String getTraceString(Throwable t) { StringWriter stringWriter= new StringWriter(); PrintWriter writer= new PrintWriter(stringWriter); t.printStackTrace(writer); StringBuffer buffer= stringWriter.getBuffer(); return buffer.toString(); }