5

我已经为自定义日志记录级别编写了类,即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以及如何INIT在我的 Java 类中使用此日志记录级别?

4

4 回答 4

3

你必须:

  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

就这样!

PS: '#' 语法在org.apache.log4j.helpers.OptionConverter源类中描述。

于 2014-12-12T16:51:06.287 回答
1

你可以试试这个

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %c:%L - %m%n
log4j.category.YOUR_PACKAGE=INFO,YOUR_PACKAGE.InitLoggingLevel

或者可以查看log4j 类别http://veerasundar.com/blog/2009/08/log4j-tutorial-how-to-send-log-messages-to-different-log-files/

于 2012-11-07T08:11:16.900 回答
0

它可以是这样的:

 <category  name="xxx" additivity="false">
           <priority class="your class" value="info"/>
           <appender-ref ref="xxxlog"/>
        </category>
于 2012-11-07T08:51:15.567 回答
0

不知道您是否已经弄清楚了,但是我找到了以下文章,这对我有所帮助。

https://www.owasp.org/index.php/How_to_add_a_security_log_level_in_log4j

新级别使用预期的日志标签打印,但 log4j 无法识别我的属性文件中的新级别。我会看到,我能做些什么。

于 2013-03-01T10:57:37.570 回答