0

Log4j を使用してエラーに関する電子メール ログを送信しています。プロパティ ファイルではなく、Java の log4j で SMTP 設定を設定したいと考えています。パスワードの設定が機能し、それを使用してメールを正常に送信できます

private static final Logger logger = Logger.getLogger("emailer");

(...)

Enumeration<?> enm = logger.getAllAppenders();
while (enm.hasMoreElements()) {
    Object element = enm.nextElement();
    if (element instanceof SMTPAppender) {
        ((SMTPAppender) element).setSMTPPassword(password);
    }
}

ただし、SMTPAppender で他のセッターを使用しても何も行われず (ホスト、ユーザー名などの設定)、log4j はプロパティ ファイルの設定を使用し続けます。

(...)

log4j.logger.emailer=stdout, email
log4j.additivity.emailer=false

log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=smtp.gmail.com
log4j.appender.email.SMTPPort=465
log4j.appender.email.SMTPUsername=username@gmail.com
log4j.appender.email.SMTPPassword=-
log4j.appender.email.From=username@gmail.com
log4j.appender.email.to=username@gmail.com
log4j.appender.email.Subject=Error Alert
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.email.BufferSize=10
log4j.appender.email.Threshold=ERROR
4

1 に答える 1

1

名前またはパスワードを変更した後、activateOptions()を呼び出す必要があるようです。

于 2012-10-16T13:45:10.437 に答える