Log4j使用Java记录自定义日志级别

时间:2012-11-07 06:15:16

标签: java log4j

我已经编写了自定义日志记录级别的类,即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日志记录级别?

3 个答案:

答案 0 :(得分:2)

你必须:

  1. 覆盖方法toLevel(String logArgument),如下所示:

    public static Level toLevel(String logArgument) {
        if (logArgument != null && logArgument.toUpperCase().equals("INITLOGGING")) {
            return INIT_LOGGING;
        }
        return (Level) toLevel(logArgument);
    }
    
  2. 在log4j.properties中写一个配置行,如下所示:

    log4j.logger.[MY_CATEGORY]=INITLOGGING#your-package.InitLoggingLevel

  3. 这就是全部!

    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无法识别我的属性文件中的新级别。我会看到,我能做些什么。