Java Logback SMTPAppender:使用JNDI时,在何处/如何指定“收件人/发件人”字段
编辑:我真正想问的是:当配置为使用JNDI查找时,如何使用Logback的Java Logback SMTPAppender:使用JNDI时,在何处/如何指定“收件人/发件人”字段,java,jndi,logback,smtpappender,Java,Jndi,Logback,Smtpappender,编辑:我真正想问的是:当配置为使用JNDI查找时,如何使用Logback的SMTPAppender来指定到和来自电子邮件地址?这应该是SMTPAppender的基本功能形式,如果它不支持此功能,SMTPAppender将无法使用JNDI查找 我定义了以下LogbackSMTPAppender: <appender name="logManager-smtpAppender" class="ch.qos.logback.classic.net.SMTPAppender"> &l
SMTPAppender
来指定到
和来自
电子邮件地址?这应该是SMTPAppender
的基本功能形式,如果它不支持此功能,SMTPAppender
将无法使用JNDI查找
我定义了以下LogbackSMTPAppender
:
<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>
但我仍然不知道应该在哪里/如何设置字段。有什么想法吗?提前谢谢 收件人和发件人地址与javamail不相关。javamail会话用于配置消息的传输方式,而不是单个消息的详细信息 在xml配置中设置“收件人”和“发件人”字段,行如中所示
. 对于weblogic,您可以像这样配置它。这是一个已知的错误。SMTPAppender无法使用JNDI作为连接源,无法从1.0.13开始成功发送电子邮件(它已提前发布)。谢谢@sbridges(+1),但即使在我定义
和
时,我也会收到相同的“错误消息”(空目标地址。正在中止电子邮件传输)…而且我正在部署到Tomcat,并在Tomcat的全局conf/context.xml
中定义JNDI连接源。如果您在context.xml
中指定了所有邮件会话凭据,但在logback.xml中指定了“收件人/发件人”地址,那么SMTPAppender就可以正常工作了?您在logback.xml中定义了“收件人”和“发件人”,在context.xml中定义了“凭据”,但在logback.xml中定义了“收件人”和“发件人”,而在context.xml中定义了“凭据”,则无法正常工作,以及获取“空目标地址。中止电子邮件传输”。如果在parseAddress()中放置断点,TopAtterLayoutList是否为空?它的价值是什么?
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;
}
<configuration>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>ADDRESS-OF-YOUR-SMTP-HOST</smtpHost>
<to>EMAIL-DESTINATION</to>
<to>ANOTHER_EMAIL_DESTINATION</to> <!-- additional destinations are possible -->
<from>SENDER-EMAIL</from>
<subject>TESTING: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
</appender>
<root level="DEBUG">
<appender-ref ref="EMAIL" />
</root>
</configuration>