2015-04-03 2 views
0

У меня есть некоторые приложения, установленные для моих клиентов, и я настроил приложение smtp для получения сообщений об ошибках.Log4j2 пользовательский вопрос электронной почты с карты

К несчастью, мне нужен способ понять, от какого клиента доходит электронное письмо.

Я пытаюсь установить параметр на карте, чтобы показать его как тему письма. Я могу установить этот параметр только после запуска моего приложения и БД составляет:

String[] parametri = {username}; 
MapLookup.setMainArguments(parametri); 

и мой log4j2.xml является:

<SMTP name="Mailer" subject="${sys:logPath} - ${map:0}" to="${receipients}" 
     from="${from}" smtpHost="${smtpHost}" smtpPort="${smtpPort}" 
     smtpProtocol="${smtpProtocol}" smtpUsername="${smtpUser}" 
     smtpPassword="${smtpPassword}" smtpDebug="false" bufferSize="200" 
     ignoreExceptions="false"> 
    </SMTP> 

объекта в соответствующей части. К несчастью, предмет не заменяется на log4j и остается таким, какой он есть.

Что я делаю неправильно?

Благодаря

ответ

1

В настоящее время класс SmtpAppender (на самом деле его помощник SmtpManager) создает объект MimeMessage раз и использует ее для всех отправляемых сообщений. Объект сообщения инициализируется только один раз. Поиск выполняется только один раз при чтении конфигурации.

Предлагаю вам поднять запрос функции на Log4j2 Jira для отслеживания проблем.

-1

Я внедрил расширенную версию SMTP-приложения, поддерживающего PatternLayout в теме.

Кроме того, он поддерживает всплеск суммирования, поэтому вы не получите 1000 писем с ошибками через несколько секунд или минут. Случай использования. Отправляйте все ERROR-журналы по электронной почте в службу поддержки/разработчика. В сломанной сети или базе данных это может вызвать сотни одинаковых сообщений об ошибках. Это Appender делает следующее:

  • первое вхождение по электронной почте сразу
  • все последующие подобные журналы ОШИБОК хранятся в буфере в течение определенного времени (сходство и время настраивается)
  • после того, как время прошло, резюме (количество событий, время) и первое и последнее событие отправляются

Он состоит из ExtendedSmtpAppender и -Manager. (Я не могу прикрепить файлы здесь, так что увидеть ссылку на публично доступном Apache JIRA.)

Пример конфигурации (внутри < Appenders>):

<SMTPx name="ErrorMail" smtpHost="mailer.xxxx.de" smtpPort="25" 
     from="your name &lt;[email protected]>" to="${errorEmailAddresses}" 
     subject="[PROJECT-ID, ${hostName}, ${web:contextPath}] %p: %c{1} - %m%notEmpty{ =>%ex{short})}" 
     subjectWithLayout="true" bufferSize="5" 
     burstSummarizingSeconds="300" bsCountInSubject="S" bsMessageMaskDigits="true" 
     bsExceptionOrigin="true" > 
    <PatternLayout pattern="-- %d %p %c [%.20t,%x] %m%n" charset="UTF-8" />  <!-- SMTP uses fixed charset for message --> 
</SMTPx> 
<Async name="AsyncErrorMail" blocking="false" errorRef="Console"> 
    <AppenderRef ref="ErrorMail"/> 
</Async> 

Смотрите также https://issues.apache.org/jira/browse/LOG4J2-1192 и прилагаемый к нему исходный код.

+1

Пожалуйста, добавьте больше информации о вашем решении. Ответ должен стоять сам по себе, со ссылкой как дополнительная информация. Когда вся соответствующая информация находится в связанном источнике, ответ скорее всего будет удален. –

Смежные вопросы