2016-06-22 10 views
0

Javaアプリケーションでlog4jを使用してメール通知を送信します。しかし、構成されたlog4j.propertiesファイルの最初の試みは、charmのように働いていました。しかし、私は、実行時に生成される動的な主題を、欲しい以来、私は成功しません、次のコマンドを試してみました:Log4J SMTPAppender Java

final static Logger logger = Logger.getRootLogger(); 

... 

public static mail(String msg, String subj) { 

    SMTPAppender mailAppend = new SMTPAppender(); 
    mailAppend.setBufferSize(3); 
    mailAppend.setSMTPHost("smtphostname"); 
    mailAppend.setTo("[email protected]"); 
    mailAppend.setSubject(subj); 
    logger.addAppender(mailAppend); 
    logger.error(msg); 
} 

は出力:

log4j:ERROR Message object not configured. 

だから私は、必要なゲッターを逃したのですか?

+0

はなぜ[のJavaMail API](https://java.net/projects/javamail/pages/Home)を使用していませんか? – Fildor

+0

私はすでにlog4jを使ったファイルロギングをトレースなどに使用していますので、いくつかのより高い優先度で余分な送信メールを実装してからトレースするのが最も簡単な方法です。 – bhlx

+0

なので、警告やエラー通知を送信しようとしていますか?もしそうなら、私はルートロガーそのものではなく、特別なロガーを使用します。それから私はappenderを変更して件名を変更し、新しいものを何度も何度も何度も追加することはしません。メールがエラー/ロギングと関係がない場合は、別のメールライブラリを使用します。 – Fildor

答えて

0

SMTPAppenderは、xmlまたはプロパティ ファイルを使用して設定することも、手動で設定ツールを使用して設定することもできます。 setterを使用する場合は、activateOptions関数または 関数を呼び出してオプションを有効にする必要があります。そうでない場合は、「ERROR Message object not configured」というメッセージが表示されます。 すべての関連オプションが設定されている場合にのみ、オプションが有効になるようにします(ポート設定前に ホスト設定を有効にしたくない場合など)。 FROM

https://community.oracle.com/thread/1758275?start=0&tstart=0

+0

タイ、私はそれを試して、それが記載どおりに動作します。 私は共有したい別の解決策を見つけました。 あなたは、単にワイルドカードで動作することができますので、log4j.propertiesに: log4j.appender.email.Subject = $ {} mail.subject とJavaで をするSystem.setProperty( "mail.subject"、 insert_subject_here); org.apache.log4j.LogManager.resetConfiguration(); PropertyConfigurator.configure( "/ link/to/log4j.properties"); その後、更新された件名でエラーを記録することができます。 – bhlx

+0

@bhlx確かに、自分の質問に答えを加えることができます。 – Fildor

関連する問題