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ログ レベルを My 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

すでに理解されているかどうかはわかりませんが、次の記事が役に立ちました。

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

新しいレベルは予想されるログ タグで出力されますが、log4j はプロパティ ファイル内の新しいレベルを認識しません。私はそれについて何ができるか見ていきます。

于 2013-03-01T10:57:37.570 に答える
0

次のようになります。

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