2009-04-07 11 views
3

ログをサポートするようにQuartzスケジューラを設定しようとしています。私は次のことをやってみました:QuartzスケジューラがLog4jメッセージを表示しない

私のアプリのclassesフォルダにlog4j.xmlを追加しました。そのためのコードは次のとおりです。

log4j:WARN No appenders could be found for logger 
    (org.quartz.simpl.SimpleThreadPool). 
log4j:WARN Please initialize the log4j system properly. 

教えてください:

static Logger logger = Logger.getLogger("QuartzReport.class"); 
logger.info("Info"); 

は、しかし、コンソールが起動すると、次のメッセージが表示されます。

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 
log4j.rootLogger=debug, stdout 

を追加しましたが、私のスケジューラクラス内の文を、次の私は何かが欠けているかどうか私。

よろしく、 伊武

+0

ダグラスが言及したものから、log4j.propertiesにorg.quartzのカテゴリを追加する必要があると思います。 –

答えて

2

あなたはessentialy 2点を逃している:

  1. あなたの設定ファイルは、プロパティファイル、XMLではないですが。したがって、 'log4j.properties'として保存する必要があります。
  2. 項目1に記載されているファイルが、アプリケーションのクラスパスにあることを確認してください(最近のlog4j実装が使用されていることを前提とします)。

幸運、

ダグラス

+0

ダグラスに感謝します。私は両方の点を考慮しました。詳細なコメントについては、私の次の回答セグメントを参照してください。 よろしく、Ibu –

0

また、あなたはあなたを設定することができ、このラインで

log4j.logger.org.quartz =デバッグ、標準出力

+0

log4j.propertiesにurコードを追加しようとしました。配備時にエラーが発生しました。ただし、ログファイル内のメッセージは以前と同じように出力されます。 Plzrefermynextanswer。 log4j:エラーキーlog4j.appender.stdoutの値が見つかりませんでした log4j:エラー "stdout"という名前のアペンダーをインスタンス化できませんでした。 –

0

をあなたのlog4jの設定を更新してみてくださいコードをプログラムで(あなたのQuartzReportクラスのmainメソッドのように)、設定ファイル(あなたのプロパティファイル)を使って、

Log4jの新しいバージョンでは、クラスパスからlog4j.propertiesという名前のファイルをロードしようとし、それを使用して自動的にロガーを設定します。

あなたのケースでは、BasicConfigurator.configure()コールはあなたのプロパティファイル内のすべての定義を上書きします(つまり、プロパティファイルは無視されます)。また、ログに表示される出力は、PatternLayoutコンストラクタで指定したパターンに従います。そのようなパターンを定義する方法の詳細はPatternLayout class documentationにあります。

関連する問題