我已经编写了自定义日志记录级别的类,即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
中进行哪些更改以及如何在My Java类中使用此INIT
日志记录级别?
答案 0 :(得分:2)
你必须:
覆盖方法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中写一个配置行,如下所示:
log4j.logger.[MY_CATEGORY]=INITLOGGING#your-package.InitLoggingLevel
这就是全部!
P.S。:{#3}}源类中描述了'#'语法。
答案 1 :(得分:0)
可以是这样的:
<category name="xxx" additivity="false">
<priority class="your class" value="info"/>
<appender-ref ref="xxxlog"/>
</category>
答案 2 :(得分:0)
不知道你是否已经弄明白,但我找到了以下文章,这对我有帮助。
https://www.owasp.org/index.php/How_to_add_a_security_log_level_in_log4j
新级别打印有预期的日志标记,但log4j无法识别我的属性文件中的新级别。我会看到,我能做些什么。