自定义Log4j日志级别
public class UserLog {
private Logger logger;public UserLog(Logger logger) {
super();
this.logger = logger;
}
public static UserLog getLog(Class clazz){
Logger logger = Logger.getLogger(clazz);
return new UserLog(logger);
}
private static class UserInfoLevel extends Level {
private static final long serialVersionUID = -7976298046021545731L;
protected UserInfoLevel(int level, String levelStr, int syslogEquivalent) {
super(level, levelStr, syslogEquivalent);
// TODO Auto-generated constructor stub
}
}
private static final Level User_LOG_LEVEL = new UserInfoLevel(20050, "USERINFO", SyslogAppender.LOG_LOCAL0);
public void userLog(Object pm_objLogInfo) {
logger.log(User_LOG_LEVEL, pm_objLogInfo);
}
}
自定义级别过滤
public class UserLogFilter extends Filter {
boolean acceptOnMatch = false;
int levelMin;
int levelMax;
public int getLevelMin() {
return levelMin;
}
public void setLevelMin(int levelMin) {
this.levelMin = levelMin;
}
public int getLevelMax() {
return levelMax;
}
public void setLevelMax(int levelMax) {
this.levelMax = levelMax;
}
@Override
public int decide(LoggingEvent lgEvent) {
int inputLevel = lgEvent.getLevel().toInt();
if (inputLevel >= levelMin && inputLevel <= levelMax) {
return 0;
}
return -1;
}
}
xml配置方法:
<appender name="LOG.USER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="d:\\logs\\LOG_USER.log" />
<param name="DatePattern" value="'_'yyyyMMdd-HH'.log'" /><!-- 每小时生成一个文件-->
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - %-5p %x - %m - %c -%-4r [%t] %n" />
</layout>
<filter class="com.kcb.common.log4j.UserLogFilter">
<param name="LevelMin" value="20050" />
<param name="LevelMax" value="20050" />
</filter>
</appender>
测试:
public class UserLogTest {
private static Logger logger = Logger.getLogger(UserLogTest.class);
@Test
public void test(){
UserLog.getLog(UserLogTest.class).userLog("这是一条测试信息~");
logger.info("测试info");
}
}