ログ ファイルを 1 時間ごとにスキャンし、エラーを検出すると電子メールを IT 部門に送信する Java プログラムがあります。ロガーは、log4j.properties ファイルを使用して構成されます。
ここで、実行時に電子メールの受信者を変更したいと考えています。コードは次のようになります。
SMTPAppender smtp = (SMTPAppender)(logger.getAppender("smtp"));
smtp.activateOptions();
smtp.setTo(email);
logger.removeAppender("smtp"); // I tried it with or without the two lines
logger.addAppender(smtp); // It's the same result
デバッグすると、smtp の To フィールドが実際に必要な電子メール アドレスであることをスタックで確認できますが、logger.error(message);
後で呼び出すと、構成ファイルで指定された電子メール アドレスに送信されます。
なぜこれが起こっているのか、誰かが私に考えを与えることができますか? プログラムで実行時にsmtpアペンダーをすべて作成できることは知っていますが、プログラムによる構成とプロパティファイルの構成を混在させる方法があるかどうか疑問に思います。