背景介绍:为service中的每个方法进行日志记录,记录方法执行时间以及方法名、方法用途、返回结果等。记录工具采用了log4j,并自定义级别,然后分类输出到文件中。
首先,自定义log4j级别:
public class ServiceLog {
private static Logger logger = Logger.getLogger(ServiceLog.class);
// 定义级别
private static class ServiceLogLevel extends Level {
private static final long serialVersionUID = 1L;
private ServiceLogLevel(int level, String name, int sysLogLevel) {
super(level, name, sysLogLevel);
}
}
// 20050级别数,"SERVICELOG":级别名称
private static final Level SERVICE_LOG_LEVEL = new ServiceLogLevel(20050, "SERVICELOG",
SyslogAppender.LOG_LOCAL0);
// 使用时调用方法
public static void serviceLogger(Object pm_objLogInfo) {
logger.log(SERVICE_LOG_LEVEL, pm_objLogInfo);
}
}
定义过滤器:
public class ServiceLogFilter extends Filter {
boolean acceptOnMatch = false;
private String levelMin;
private String levelMax;
public String getLevelMin() {
return levelMin;
}
public void setLevelMin(String levelMin) {
this.levelMin = levelMin;
}
public String getLevelMax() {
return levelMax;
}
public void setLevelMax(String levelMax) {
this.levelMax = levelMax;
}
public boolean isAcceptOnMatch() {
return acceptOnMatch;
}
public void setAcceptOnMatch(boolean acceptOnMatch) {
th