【问题标题】:Logging errors in a grails application in the logs在日志中记录 grails 应用程序中的错误
【发布时间】:2013-05-12 14:38:22
【问题描述】:

当我的 Grails 应用程序崩溃时,它会在错误页面上显示错误和堆栈跟踪,因为 error.gsp 页面具有以下 sn-p <g:renderException exception="${exception}" />。但是日志文件中没有记录任何内容。

我该如何改变呢?因为对于生产应用程序,我计划删除renderException,因为我不希望用户看到整个堆栈跟踪。

我的log4j设置如下:

appenders {
    rollingFile name:'catalinaOut', maxFileSize:1024, fileName:"${System.properties.getProperty('catalina.home')}/logs/mylog.log"
}

root {
    error 'catalinaOut'
    debug 'catalinaOut'
    additivity = true
}

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',
        'net.sf.ehcache.hibernate',
        'grails.app'

debug   'grails.app'

}

我正在以grails run-app 的身份运行开发中的应用程序

【问题讨论】:

    标签: exception grails logging log4j


    【解决方案1】:

    我将这些设置用于基于控制台和文件的日志记录。如果您不想要/不需要控制台,您可以删除标准输出。只需复制相应列表中的所有错误类即可。

    log4j = {
    
        def loggerPattern = '%d %-5p >> %m%n'
    
        def errorClasses = [] // add more classes if needed
        def infoClasses = ['grails.app.controllers.myController'] // add more classes if needed
        def debugClasses = [] // add more classes if needed
    
        appenders {
            console name:'stdout', layout:pattern(conversionPattern: loggerPattern)
            rollingFile name: "file", maxFileSize: 1024, file: "./tmp/logs/logger.log", layout:pattern(conversionPattern: loggerPattern)
        }
    
        error   stdout: errorClasses, file: errorClasses
        info    stdout: infoClasses, file: infoClasses
        debug   stdout: debugClasses, file: debugClasses
    }
    

    【讨论】:

    • 我也可以在列表中输入包名吗?还是需要具体的类
    • @Anthony 是的,您还可以添加一个包,这意味着该包中的所有类都将具有相同的日志级别
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多