Logback SMTPAppender:使用JNDI时在/从字段指定的位置/方式

时间:2013-06-04 20:18:30

标签: java jndi logback smtpappender

修改:我在此处 使用Logback的to,当它被配置为使用JNDI查找时?这应该是from的基本功能形式,并且不存在SMTPAppender使用JNDI查找的方式,如果它不支持此功能!

我定义了以下Logback SMTPAppender

SMTPAppender

如您所见,我使用JNDI查找邮件服务器凭据。

当这个运行时,我得到:

  

15:50:06,857 | -INFO in ch.qos.logback.classic.net.SMTPAppender [logManager-smtpAppender] - 空目标地址。中止电子邮件传输

这让我意识到:上面的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> 中没有指定来往/来自电子邮件地址。

如何/在哪里(例如,请!)我指定这些?!?我检查了Logback的源代码,此消息从SMTPAppender内打印出来:

context.xml

但我仍然无法告诉我应该在哪里/如何设置/来自字段。有任何想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:4)

来往地址与javamail Session无关。 javamail会话用于配置消息的传输方式,而不是单个消息的详细信息。

您可以使用example中显示的行设置xml配置中的to和from字段,

<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>
  

让SMTPAppender使用JNDI连接源中定义的邮件会话凭据

在jndi中设置java邮件会话凭据特定于您正在使用的应用程序服务器。例如,您可以为tomcat配置jndi凭据,如this question所示。对于weblogic,您可以将其配置为this

答案 1 :(得分:1)

这是一个已知的错误。 SMTPAppender无法使用JNDI作为连接源,并且从1.0.13开始成功发送电子邮件(过早发布)。