Изменить. Все, что я на самом деле спрашиваю здесь, это: как указать адреса электронной почты to
и from
с помощью SMTPAppender
Logback, когда он настроен на использование поиска JNDI? em> Это должна быть базовая форма функциональности для SMTPAppender
, и SMTPAppender
не сможет работать с поиском JNDI, если он не поддерживает эту функциональность!
У меня определен следующий Logback SMTPAppender
:
<appender name="logManager-smtpAppender" class="ch.qos.logback.classic.net.SMTPAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<asynchronousSending>false</asynchronousSending>
<sessionViaJNDI>true</sessionViaJNDI>
<jndiLocation>java:comp/env/mail/Session-local</jndiLocation>
<subject>%logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>25</bufferSize>
</cyclicBufferTracker>
</appender>
Как видите, я использую JNDI для поиска учетных данных почтового сервера.
Когда это работает, я получаю:
15:50:06,857 |-INFO в ch.qos.logback.classic.net.SMTPAppender[logManager-smtpAppender] — пустой адрес назначения. Прерывание передачи электронной почты
Это заставило меня осознать: нет, где в SMTPAppender
выше или в моем context.xml
я указываю адреса электронной почты для/от.
Как/где (примеры, пожалуйста!) мне указать это?!? Я проверил исходный код Logback, и это сообщение печатается изнутри SMTPAppenderBase.java
:
List<InternetAddress> destinationAddresses = parseAddress(lastEventObject);
if (destinationAddresses.isEmpty()) {
addInfo("Empty destination address. Aborting email transmission");
return;
}
private List<InternetAddress> parseAddress(E event) {
int len = toPatternLayoutList.size();
List<InternetAddress> iaList = new ArrayList<InternetAddress>();
for (int i = 0; i < len; i++) {
try {
PatternLayoutBase<E> emailPL = toPatternLayoutList.get(i);
String emailAdrr = emailPL.doLayout(event);
if (emailAdrr == null || emailAdrr.length() == 0) {
continue;
}
InternetAddress[] tmp = InternetAddress.parse(emailAdrr, true);
iaList.addAll(Arrays.asList(tmp));
} catch (AddressException e) {
addError("Could not parse email address for [" + toPatternLayoutList.get(i) + "] for event [" + event + "]", e);
return iaList;
}
}
return iaList;
}
Но я до сих пор не могу сказать, где/как я должен устанавливать/из полей. Есть идеи? Заранее спасибо!