我想我遇到了一个 playframework - logback 特定的错误,也许不是,任何帮助都会很棒!
我需要一个电子邮件附加程序,以便在发生错误时向我发送电子邮件。
所以我创建了一个简单的,其中定义了所有属性:
<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。从字段和密码相同。
所以显然它不起作用。
知道如何防止这种情况吗?