Log4j日志记录Java中的自定义日志级别

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?

您必须:

  1. 像这样覆盖方法 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

    仅此而已!

    PS:

    P.S.: The '#' syntax is described in org.apache.log4j.helpers.OptionConverter source class.