Log4j日志记录Java中的自定义日志级别
问题描述:
我已经编写了用于自定义日志记录级别的类,即 INIT
I have written class for custom logging level i.e. INIT
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
public class InitLoggingLevel extends Level {
public static final String INITLOGGING_LEVEL = "INITLOGGING";
public static final Level INIT_LOGGING = new InitLoggingLevel(
DEBUG_INT - 4, INITLOGGING_LEVEL, 7);
protected InitLoggingLevel(int level, String levelStr, int syslogEquivalent){
super(level, levelStr, syslogEquivalent);
}
}
现在我需要在 log4j.properties
中进行哪些更改,以及如何在Java类中使用此 INIT
日志记录级别?
Now what are changes I need to make in log4j.properties
and how I am going to use this INIT
logging level in My Java class?
答
您必须:
-
像这样覆盖方法
toLevel(String logArgument)
:
public static Level toLevel(String logArgument) {
if (logArgument != null && logArgument.toUpperCase().equals("INITLOGGING")) {
return INIT_LOGGING;
}
return (Level) toLevel(logArgument);
}
在log4j.properties中写一条配置行,如下所示:
Write a configuration line in the log4j.properties like this:
log4j.logger.[MY_CATEGORY] = INITLOGGING#your-package.InitLoggingLevel
仅此而已!
P.S.: The '#' syntax is described in org.apache.log4j.helpers.OptionConverter
source class.