1

私は何が欠けていますか?メールを正常に送信する以下のコードがありますが、メールの本文は空です。これはpatternLayoutに関係していると思いますが、すべて問題ないように見えます。何が起こっているのかについて何かアイデアはありますか?

private void createAdminNotifyAppender(LoggerContext lc, AppConfigPropertiesReader propReader)
{
    logger.info("Setting up logback admin_notify logging");

    //Set up the admin notify appender programatically (needs to use the properties from the propReader above)
    OnMarkerEvaluator markerEvaluator = new OnMarkerEvaluator();
    markerEvaluator.addMarker(LogbackMarker.ADMIN_NOTIFY.toString());
    String adminEmails = propReader.getProperty("adminEmail");
    PatternLayout patternLayout = new PatternLayout();
    patternLayout.setPattern("[\\(%-6threadHash\\) app=iv  %d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %-25logger{25} - %msg%n");

    SMTPAppender adminNotifyAppender = new SMTPAppender();
    adminNotifyAppender.setContext(lc);
    adminNotifyAppender.setEvaluator(markerEvaluator);
    adminNotifyAppender.setSMTPHost(propReader.getProperty("smtpHost"));
    for (String adminEmail : adminEmails.split(",")) { adminNotifyAppender.addTo(adminEmail); };
    adminNotifyAppender.setFrom(propReader.getProperty("sysEmailAddressNoReply"));
    adminNotifyAppender.setSubject("System Alert! [" + propReader.getProperty("environment") + "]");
    adminNotifyAppender.setLayout(patternLayout);
    adminNotifyAppender.start();

    Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
    rootLogger.addAppender(adminNotifyAppender);
}
4

1 に答える 1

1

問題は、PatternLayoutとOnMarkerEvaluatorの両方に呼び出す必要のあるstartメソッドがあることです(MarkerEvaluatorはそれなしで機能するように見えました)。

さらに、両方ともloggerContext(patternLayout.setContext(lc)を呼び出すことによって設定)も知っている必要があります。そうしないと、次のように出力されます。

[(%PARSER_ERROR[threadHash]) app=iv  %PARSER_ERROR[d]] %PARSER_ERROR[level] %PARSER_ERROR[logger] - %PARSER_ERROR[msg]%PARSER_ERROR[n]

今はすべて順調です。

于 2012-07-17T20:11:06.183 に答える