带有名为“$ {appname} .log”的外部log4j的Grails,它不起作用

时间:2016-10-11 19:34:44

标签: grails log4j external

1.Grails版本2.5.1

我在env中使用了Grails external log4j:

grails.config.locations = ["file:${basedir}/grails-app/config/log4j.groovy"]
像这样

和log4j.groovy

log4j = {
     appenders {
        appender new org.apache.log4j.DailyRollingFileAppender(name:"dailyAppender",
                layout:pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss,SSS} %l %c{3} %m%n'),fileName:"D:\\error-logs\\b2-error.log",datePattern:"'.'yyyy-MM-dd")
     }
     console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
     error  'org.codehaus.groovy.grails.web.servlet',        
            'org.codehaus.groovy.grails.web.pages',          
            'org.codehaus.groovy.grails.web.sitemesh',      
            'org.codehaus.groovy.grails.web.mapping.filter',
            'org.codehaus.groovy.grails.web.mapping',       
            'org.codehaus.groovy.grails.commons',         
            'org.codehaus.groovy.grails.plugins',         
            'org.codehaus.groovy.grails.orm.hibernate',  
            'org.springframework',
            'org.hibernate',
            'net.sf.ehcache.hibernate'
     debug  "grails.plugin.mail",
            "gsuk.sms",
            'grails.app.jobs',
            "gsuk.service"
        }

嗯,当log4j.groovy中的“=”

时出错

我不知道为什么以及如何让它发挥作用

顺便说一句,如果我在config.groovy中使用它,一切都还可以......

2 个答案:

答案 0 :(得分:0)

我的环境中有类似的东西,它的工作正常。不同之处可能是我的内部和外部Config.groovy文件中都有log4j部分。在我的\grails-app\conf\Config.groovy文件中,我有:

grails.config.locations = ["file:path\to\external-config.groovy"]
...
log4j.main = {...}

在我的external-config.groovy中我有:

log4j.external = {...}

这允许我在我的应用程序中始终使用基本log4j定义,然后是可以附加到内部定义的外部log4j定义。您只需要以不同的名称命名,不必是.main.external,它可以是.foo.bar

答案 1 :(得分:0)

${appName}在外部配置文件中不起作用,至少在Grails2中是这样。使用grails.util.Metadata.current.getApplicationName()(进出${})。请参阅:access to application properties (${appName}) in external configuration

虽然我在示例log4j代码中没有看到appName