2

我正在尝试创建 4 个不同的日志来写入(使用 Tomcat)。这是代码(有一些奇怪的东西,因为我正在试验它):

log4j = {

    appenders {
        rollingFile  name:'infoLog', file:'/logs/info.log', threshold: org.apache.log4j.Level.INFO
        rollingFile  name:'warnLog', file:'/logs/warn.log', threshold: org.apache.log4j.Level.WARN
        rollingFile  name:'errorLog', file:'/logs/error.log', threshold: org.apache.log4j.Level.ERROR
        rollingFile name:'debugLog', file:'/logs/debug.log', threshold: org.apache.log4j.Level.DEBUG
    }
    root {
        info 'infoLog', 'errorLog', 'warnLog', 'debugLog'
        error 'errorLog'
        warn 'warnLog'
        debug 'debugLog'        
    }

    info 'grails.app'
    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'

    warn   'org.mortbay.log'
    debug 'grails.app'
}

当我部署和运行应用程序时,我在 catalina.out 中得到了这个:

log4j:ERROR setFile(null,true) 调用失败。java.io.FileNotFoundException:/logs/info.log(没有这样的文件或目录)在 java.io.FileOutputStream.openAppend(Native Method) 在 java.io.FileOutputStream.(FileOutputStream.java:177) 在 java.io。 FileOutputStream.(FileOutputStream.java:102)...

(对于我尝试创建的每个日志,我都会收到相同的消息)。我错过了什么吗?

谢谢

4

1 回答 1

0

该特定错误消息可能意味着该/logs目录不存在,或者它不能由运行 Grails 应用程序的用户 ID 写入。

但更一般地说,你的根记录器定义是错误的,你只需要一个日志级别(默认情况下你想为你没有指定更精确规则的记录器使用的级别)附加到所有附加程序,例如

root {
    error 'infoLog', 'errorLog', 'warnLog', 'debugLog'
}

各种附加程序的阈值将确保每个附加程序都获得正确的消息:使用此配置debugLog将接收所有消息(调试、信息、警告和错误);infoLog将收到信息、警告和错误;warnLog将收到警告和错误;并且errorLog只会收到错误消息。

于 2012-11-15T15:35:29.557 回答