log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
2017-06-26 15:00
363 查看
1.日志的等级DEBUG < INFO < WARN < ERROR < FATAL
2.log4j.properties配置文件详情
log4j.rootLogger=info,stdout,info,debug,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.logger.info=info
#log4j.appender.info=com.logger.test.Appender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = INFO
log4j.appender.info.append=true
log4j.appender.info.File=logs/info.log
log4j.logger.debug=debug
log4j.appender.debug=com.logger.test.Appender
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=logs/debug.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=true
log4j.appender.error.File=logs/error.log
而实际上这部分代码解决不了按照LOG4J的级别文件进行文件输出。
配置中关键的配置说明是这一句:log4j.appender.info.Threshold
= INFO
而它的作用是输出INFO级别以上的内容到logs/info.log中,所以info.log文件中包含了ERROR级别的文件。
确的解法是:
定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。
/**
Check whether the message level is below the appender's
threshold. If there is no threshold set, then the return value is
always <code>true</code>.
*/
public
boolean isAsSevereAsThreshold(Priority priority) {
return ((threshold == null) || priority.isGreaterOrEqual(threshold));
}
重写 isAsSevereAsThreshold(Priority priority)方法:
package com.logger.test;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;
public class Appender extends DailyRollingFileAppender{
@Override
public boolean isAsSevereAsThreshold(Priority priority) {
//只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
在log4j.properties中,将配置文件作如下修改:
log4j.appender.info=com.logger.test.Appender
也就是将log4j配置文件注解打开,按照以上配置就可以将对应的日志输出到对应的文件中去
2.log4j.properties配置文件详情
log4j.rootLogger=info,stdout,info,debug,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.logger.info=info
#log4j.appender.info=com.logger.test.Appender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = INFO
log4j.appender.info.append=true
log4j.appender.info.File=logs/info.log
log4j.logger.debug=debug
log4j.appender.debug=com.logger.test.Appender
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=logs/debug.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=true
log4j.appender.error.File=logs/error.log
而实际上这部分代码解决不了按照LOG4J的级别文件进行文件输出。
配置中关键的配置说明是这一句:log4j.appender.info.Threshold
= INFO
而它的作用是输出INFO级别以上的内容到logs/info.log中,所以info.log文件中包含了ERROR级别的文件。
确的解法是:
定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明。
/**
Check whether the message level is below the appender's
threshold. If there is no threshold set, then the return value is
always <code>true</code>.
*/
public
boolean isAsSevereAsThreshold(Priority priority) {
return ((threshold == null) || priority.isGreaterOrEqual(threshold));
}
重写 isAsSevereAsThreshold(Priority priority)方法:
package com.logger.test;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;
public class Appender extends DailyRollingFileAppender{
@Override
public boolean isAsSevereAsThreshold(Priority priority) {
//只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
在log4j.properties中,将配置文件作如下修改:
log4j.appender.info=com.logger.test.Appender
也就是将log4j配置文件注解打开,按照以上配置就可以将对应的日志输出到对应的文件中去
相关文章推荐
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中
- log4j日志配置文件及将日志根据不同的等级输入到不同的文件之中