【问题标题】:How to resolve this error message "log4j:ERROR Property missing when configuring log4j: grails"如何解决此错误消息“log4j:配置 log4j 时缺少错误属性:grails”
【发布时间】:2014-05-06 15:13:31
【问题描述】:

我使用 grails 已经有一段时间了,感觉这个错误是可以处理的。

每次我尝试“运行应用程序”命令时,当我将日志文件作为部署查看时,我会在输出中看到这一行

log4j:ERROR Property missing when configuring log4j: grails

我不知道它在寻找什么。我有几个要部署的环境,每个环境都显示相同的消息。

这是我的 config.groovy 中的块:

def appName = "${appName}"
def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'   // just in case
def logDirectory = "${catalinaBase}/logs"

log4j = { root ->
appenders {
    rollingFile name:'stdout', file:"${logDirectory}/${appName}.log".toString(), maxFileSize:'10MB'
    rollingFile name:'stacktrace', file:"${logDirectory}/${appName}_stack.log".toString(), maxFileSize:'1MB'
}

 error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
       'org.codehaus.groovy.grails.web.pages', //  GSP
       'org.codehaus.groovy.grails.web.sitemesh', //  layouts
       'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
       'org.codehaus.groovy.grails.web.mapping', // URL mapping
       'org.codehaus.groovy.grails.commons', // core / classloading
       'org.codehaus.groovy.grails.plugins', // plugins
       'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
       'org.springframework',
       'org.hibernate'
warn   'grails',
       'grails.plugin.webxml.WebxmlGrailsPlugin', 
   'grails.app.service',
   'grails.plugins.hawkeventing',
   'net.sf.ehcache.hibernate'
root.level = org.apache.log4j.Level.INFO
grails.plugin.databasemigration.updateOnStart = true
}
codenarc {
reportName = 'target/test-reports/CodeNarcReport.xml'
reportType = 'xml'
propertiesFile = 'grails-app/conf/codenarc.properties'
}
environments {
development {
    log4j = { root ->
        appenders {
            console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
        }
        error   'org.codehaus.groovy.grails.web.servlet',  //  controllers
                'org.codehaus.groovy.grails.web.pages', //  GSP
                'org.codehaus.groovy.grails.web.sitemesh', //  layouts
                'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
                'org.codehaus.groovy.grails.web.mapping', // URL mapping
                'org.codehaus.groovy.grails.commons', // core / classloading
                'org.codehaus.groovy.grails.plugins', // plugins
                'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
                'org.springframework',
                'org.hibernate',
                'org.codehaus.groovy.grails.compiler'
        warn    'grails',
                'grails.app.service',
        'grails.plugin.webxml.WebxmlGrailsPlugin',      
                'grails.plugins.hawkeventing',
        'net.sf.ehcache.hibernate'
        root.level = org.apache.log4j.Level.INFO
        grails.plugin.databasemigration.updateOnStart = true
    }

    codenarc {
        reportName = 'target/test-reports/CodeNarcReport.html'
        reportType = 'html'
    }
    //grails.plugin.databasemigration.updateOnStart = false
}

staging {
    log4j = { root ->
        appenders {
            rollingFile name:'stdout', file:"${logDirectory}/${appName}.log".toString(), maxFileSize:'10MB'
            rollingFile name:'stacktrace', file:"${logDirectory}/${appName}_stack.log".toString(), maxFileSize:'10MB'
            //console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
        }
         warn   'org.codehaus.groovy.grails.web.servlet',  //  controllers
                'org.codehaus.groovy.grails.web.pages', //  GSP
                'org.codehaus.groovy.grails.web.sitemesh', //  layouts
                'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
                'org.codehaus.groovy.grails.web.mapping', // URL mapping
                'org.codehaus.groovy.grails.commons', // core / classloading
                'grails.app.service',
                'org.codehaus.groovy.grails.compiler',
                'org.springframework'
        debug   'org.hibernate',
                'org.codehaus.groovy.grails.plugins', // plugins
                'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration                    
                'com.sexingtechnologies',
                'grails.plugins.hawkeventing',
                'net.sf.ehcache.hibernate'                  
        error   'grails',                   
                'grails.plugin.webxml.WebxmlGrailsPlugin'

        root.level = org.apache.log4j.Level.INFO
        grails.plugin.databasemigration.updateOnStart = true

    }

    codenarc {
        reportName = 'target/test-reports/CodeNarcReport.html'
        reportType = 'html'
    }
    //grails.plugin.databasemigration.updateOnStart = false
}

dbdiff {
    log4j = { root ->
        appenders {
            console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
        }
        warn    'org.codehaus.groovy.grails.web.servlet',  //  controllers
                'org.codehaus.groovy.grails.web.pages', //  GSP
                'org.codehaus.groovy.grails.web.sitemesh', //  layouts
                'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
                'org.codehaus.groovy.grails.web.mapping', // URL mapping
                'org.codehaus.groovy.grails.commons', // core / classloading
                'org.codehaus.groovy.grails.plugins', // plugins
                'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
                'org.springframework',
                'org.hibernate'
        debug  'grails.app.service',

        root.level = org.apache.log4j.Level.INFO
    }
}

}

我在这里缺少什么 log4j 正在寻找的东西?

【问题讨论】:

    标签: grails logging log4j


    【解决方案1】:

    保持配置如下。通过删除不需要的和不相关的配置,在 log4j 中添加环境级别 log4j 配置。

    def appName = "${appName}"
    def catalinaBase = System.properties.getProperty('catalina.base')
    if (!catalinaBase) catalinaBase = '.'   // just in case
    def logDirectory = "${catalinaBase}/logs"
    
    grails.plugin.databasemigration.updateOnStart = true
    
    log4j = { root ->
        appenders {
            rollingFile name: 'stdout', file: "${logDirectory}/${appName}.log".toString(), maxFileSize: '10MB'
            rollingFile name: 'stacktrace', file: "${logDirectory}/${appName}_stack.log".toString(), maxFileSize: '1MB'
        }
    
        error 'org.codehaus.groovy.grails.web.servlet',  //  controllers
                'org.codehaus.groovy.grails.web.pages', //  GSP
                'org.codehaus.groovy.grails.web.sitemesh', //  layouts
                'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
                'org.codehaus.groovy.grails.web.mapping', // URL mapping
                'org.codehaus.groovy.grails.commons', // core / classloading
                'org.codehaus.groovy.grails.plugins', // plugins
                'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
                'org.springframework',
                'org.hibernate'
        warn 'grails',
                'grails.plugin.webxml.WebxmlGrailsPlugin',
                'grails.app.service',
                'grails.plugins.hawkeventing',
                'net.sf.ehcache.hibernate'
        root.level = org.apache.log4j.Level.INFO
    
        environments {
            development {
                appenders {
                    console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
                }
    
                // DO STUFF RELATED TO DEV ENV
            }
    
            staging {
                appenders {
                    rollingFile name: 'stdout', file: "${logDirectory}/${appName}.log".toString(), maxFileSize: '10MB'
                    rollingFile name: 'stacktrace', file: "${logDirectory}/${appName}_stack.log".toString(), maxFileSize: '10MB'
                    //console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
                }
    
                // DO STUFF RELATED TO STAGING ENV
            }
    
            dbdiff {
                appenders {
                    console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n")
                }
    
                // DO STUFF RELATED TO DBDIFF ENV
            }
        }
    }
    
    codenarc {
        reportName = 'target/test-reports/CodeNarcReport.xml'
        reportType = 'xml'
        propertiesFile = 'grails-app/conf/codenarc.properties'
    }
    

    【讨论】:

    • 迁移到整体 log4j 配置设置中的环境肯定会使代码更干净,但错误是由对 grails.plugin.databasemigration.updateOnStart = true 的引用产生的。这需要在 log4j 之外,因为它不是日志记录设置。
    • 是的,没错,我猜我对 codenarc 也做了同样的事情。我忽略了这一点,但你明白我的意思。将更新答案。谢谢。 @user2623044
    • 只是添加到这个好答案。默认情况下存在控制台和 rollingFile 附加程序。要使用非默认类型的 appender,语法为:appenders{ appender new DailyRollingfileAppender(name:dailyLogFile, ...)}
    猜你喜欢
    • 2018-12-02
    • 2013-11-13
    • 1970-01-01
    • 2020-04-12
    • 2017-09-24
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多