1

log4j.xmlでプロパティ ファイルを使用してログ レベルを設定するにはどうすればよいruntime timeですか?

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="%d{ABSOLUTE} %-5p [%c{1}] [%t]: %m%n" />
    </layout>
</appender>

<logger name="com.mypackage" additivity="false">
    <level value="${level}" />
    <appender-ref ref="ConsoleAppender" />
</logger>

レベル warn 以上のすべてのメッセージがログに記録されるように、値 as を渡すことで$levelfrom myの値を設定しました。vm arguments-Dlevel="warn"

今私の問題は、ログレベルの値をpropertiesファイルから設定する必要があることvm argumentsです。これどうやってするの?

PS : 設定メカニズムとして log4j を使用して、java コードで common.logging を使用しています。

4

3 に答える 3

3

ログレベルを動的に変更する方法は次のとおりです。

LogManager.getRootLogger().setLevel(Level.DEBUG);

カスタム ファイルのプロパティを使用するには、Properties.loadFromXMLを使用してプロパティを含むファイルを読み取り、これらのプロパティを使用してレベルを決定します。

于 2012-12-26T01:11:41.410 に答える
2

サム、

あなたが求めているものがlog4jのデフォルトの動作であるかどうかはわかりません. できることは、log4j.rootLogger=DEBUG のようなプロパティをアプリケーション プロパティ ファイルに追加し、log4j がアプリケーション プロパティ ファイルを log4j プロパティ ファイルとして使用するように指定することです。

次の vm 引数を指定することで、log4j に構成ファイルを取得させることができます。

java -Dlog4j.configuration=resources/log4j_dev.properties

また

java -Dlog4j.configuration=file:/resources/log4j_dev.properties

log4j プロパティ ファイルの例は次のとおりです。

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

プロパティ ファイルに xml 形式を使用することもできます。

プログラムで (ラムタイムで) log4j のロガーを追加する場合は、次のようにする必要があります。

 ConsoleAppender console = new ConsoleAppender(); //create appender
  //configure the appender
  String PATTERN = "%d [%p|%c|%C{1}] %m%n";
  console.setLayout(new PatternLayout(PATTERN)); 
  console.setThreshold(Level.FATAL);
  console.activateOptions();
  //add appender to any Logger (here is root)
  Logger.getRootLogger().addAppender(console);

  FileAppender fa = new FileAppender();
  fa.setName("FileLogger");
  fa.setFile("mylog.log");
  fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
  fa.setThreshold(Level.DEBUG);
  fa.setAppend(true);
  fa.activateOptions();

  /add appender to any Logger (here is root)
  Logger.getRootLogger().addAppender(fa)
  //repeat with all other desired appenders

お役に立てれば。

于 2012-12-24T11:28:16.460 に答える