1
我想我打了playframework - logback特定的错误,也许不是,任何援助将是伟大的!使用外部属性文件logback不能正常工作
我需要一封电子邮件appender在发生错误时向我发送电子邮件。
所以我创建了一个简单的与中定义的所有属性:
<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
而且我的密码有一个“+”符号它,如果它在属性文件中没有引用,我会得到相同的错误。
当使用这些引用的值进行调试时,我看到引用包含在它们中。
因此,一封电子邮件正试图发送到“[email protected]”和不是[email protected]。 从字段和密码相同。
所以显然它不起作用。
任何想法如何防止这种情况?
TY回答。使用资源而不是文件确实解决了一些错误,但可悲的是我的电子邮件仍然没有被发送。 – samz