Grails应用程序不会在服务器上创建新的日志

时间:2012-11-15 14:53:28

标签: tomcat grails

我正在尝试创建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)at   java.io.FileOutputStream。(FileOutputStream.java:177)at   java.io.FileOutputStream中。(FileOutputStream.java:102)...

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

由于

1 个答案:

答案 0 :(得分:0)

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

但更一般地说,你的root logger定义是错误的,你只需要一个日志级别(默认情况下你想要使用的级别,你没有指定更精确的规则)连接到所有的appender,例如< / p>

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

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