0

ユーザーがWindowsイベントビューアに書き込むレベルを指定できるようにしたいのですが、コンソールと出力ファイルにもログを書き込んでいます。すべてのログをファイルとコンソールに書き込み、2つの個別のロガー変数を使用せずにイベントビューアにのみ上位レベルのログを書き込む方法はありますか?

private static PatternLayout myLayout 
  = new PatternLayout("%-4r [%t] %-5p %c %x - %m%n");
// Read from INI file
private static boolean enableWindowsEventLogging;
static final Logger log4jLogger = Logger.getLogger(Main.class); 
private static NTEventLogAppender eventLogAppender = new NTEventLogAppender();
private static RollingFileAppender rollingFileAppender;
private static ConsoleAppender consoleAppender = new ConsoleAppender(myLayout);
    ....
if(enableWindowsEventLogging)
{
    switch(Integer.valueOf(thisProperties.getProperty("warningLevel")))
{
    case 1: log4jLogger.setLevel(Level.ALL); break;
    case 2: log4jLogger.setLevel(Level.FATAL); break;
    case 3: log4jLogger.setLevel(Level.ERROR); break;
    case 4: log4jLogger.setLevel(Level.WARN); break;
    case 5: log4jLogger.setLevel(Level.INFO); break;
    case 6: log4jLogger.setLevel(Level.DEBUG); break;
};
// Event viewer logging
log4jLogger.addAppender(eventLogAppender);
}else
log4jLogger.setLevel(Level.OFF);
    ....
rollingFileAppender = new RollingFileAppender(myLayout,"\\logs\\log4joutput.log", true);

Apachelog4j1.2.12を使用しています

4

1 に答える 1

1

Loggerうん、イベントがその基準に一致する場合はによってピックアップされ、ロガーの関連付けられたに書き込まれることを覚えておいてAppendersください。

したがって、ロガーをアプリケーションからキャプチャする最低レベルに設定し(DEBUG)、NTアペンダーを上位レベルに設定し(INFO)、コンソールとファイルアペンダーを下位レベルに設定します(DEBUG

于 2012-10-19T17:54:03.323 に答える