2013-07-19 69 views
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]。 从字段和密码相同。
所以显然它不起作用。

任何想法如何防止这种情况?

回答

0

我已经被这个做了同样的任务:

在logback.xml文件,补充一点:

property resource="filename.properties" 

<username>${username}</username> 
<password>${password}</password> 
<to>${email1}</to> 
<from>${from}</from> 
+0

TY回答。使用资源而不是文件确实解决了一些错误,但可悲的是我的电子邮件仍然没有被发送。 – samz