我认为我遇到了一个playframework - logback特定的bug,也许不是,任何帮助都会很棒!
发生错误时,我需要一个电子邮件附加功能向我发送电子邮件 所以我创建了一个简单的,其中定义了所有属性:
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>myhost</smtpHost>
<smtpPort>25</smtpPort>
<STARTTLS>true</STARTTLS>
<username>username</username>
<password>pass</password>
<to>to</to>
<from>from</from>
<subject>Error: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
</appender>
这很好用。
然后我想重构所有的属性,因为很明显我不想将密码和类似的东西提交给源控件。
所以我用$ {propname}替换了所有属性,并在开头添加了
<property file="conf/mail.properties"/>
现在不再发送电子邮件了。
我调试并打印出属性,发现问题与引号有关
我的往返是电子邮件地址,当我把它们放在我的属性文件中时,我需要用引号括起来,否则我会收到这样的错误:
Caused by: com.typesafe.config.ConfigException$Parse: /myconfdir../mail.properties: 19: Reserved character '@' is not allowed outside quotes
此外,我的密码中有一个“+”符号,如果它在属性文件中没有引用,我会得到同样的错误。
使用这些引用值进行调试时,我看到引号包含在其中
因此,电子邮件正在尝试发送到“a@b.com”而不是a@b.com。
来自字段和密码相同
显然它不起作用。
知道如何防止这种情况吗?
答案 0 :(得分:0)
我完成了同样的任务:
在logback.xml文件中,添加:
property resource="filename.properties"
<username>${username}</username>
<password>${password}</password>
<to>${email1}</to>
<from>${from}</from>