6

深く構成する必要がないため、log4j の構成に構成ファイルまたは xml ファイルは使用しません。コンソールにメッセージを出力するだけです。だから私はこれをします:

BasicConfigurator.configure();

情報とそれ以上のメッセージのみを出力するには、次のようにします。

Logger LOG = Logger.getLogger(MyClass.class)
LOG.setLevel(Level.INFO);

それにもかかわらず、コンソールにもデバッグ メッセージが表示されます。しかし、必要なのは情報と実際のエラーメッセージだけです。

これを行う方法?

UPD:ここのチュートリアルで説明されているように、以下を含む構成ファイルを作成しました: マニュアル:

  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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L        %m%n

log4j.logger.com.messagedna.facade=INFO
log4j.logger.com.messagedna.receiver=INFO
log4j.logger.com.messagedna.util=INFO
log4j.logger.com.messagedna.parser=INFO

私はそれをcom.messagedna

ロガーが必要なすべてのクラスで、次のように書きました。

Properties props = new Properties();
try {
    props.load(new FileInputStream("/log4j.properties"));
    } catch (Exception e){
      LOG.error(e);
      }
PropertyConfigurator.configure(props);

しかし、アプリを実行すると、次のようになります。

log4j:WARN No appenders could be found for logger (com.messagedna.server.util.Config).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
4

3 に答える 3

4

のロガーを使用してログに記録されるメッセージのレベルのみを設定していますがMyClass.class、他のロガーのデバッグ レベルのメッセージは引き続き出力されます。

実際に行う必要があるのは、コンソール ログ ハンドラー (すべてのログ メッセージをコンソールに出力する役割を果たします) でログ レベルを設定することです。ただし、使用中にこれをBasicConfigurator行うのは非常に難しいため、ログ設定をプロパティ ファイルで指定する方法に移行することをお勧めします (はるかに柔軟です)。

log4j ロギング構成チュートリアルを実行することをお勧めします。これは、必要な構成を正確にまとめるのに役立ち、時間を費やす価値があることを証明するはずです。ただし、これをすばやく実行したい場合は、以下のコンテンツをファイルに追加してみてくださいlog4j.properties(例は here から取得)。

# 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

そして、次のようにコードを変更します。

Properties props = new Properties();
props.load(new FileInputStream("/my/path/to/log4j.properties"));
PropertyConfigurator.configure(props);
于 2013-07-03T08:18:21.003 に答える
3

log4j.properties を構成します。

log4j.rootLogger=DEBUG, A1

log4j.logger.com.MYPACKAGE=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
于 2013-07-03T08:13:39.027 に答える
1

コードだけで使いたいので

これが代替案です。

最初にこれを行うと、静的コードの初期化が機能します

logger = Logger.getLogger(Class.getName(), factory);
logger.setLevel(Level.INFO);

そうは言っても、log4j.xml を使用しない理由はありません。とても使いやすい1枚です。

于 2013-07-03T08:27:15.077 に答える