我正在尝试创建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)...
(我正在尝试创建的每个日志都收到相同的消息)。我错过了什么吗?
由于
答案 0 :(得分:0)
该特定错误消息可能意味着/logs
目录不存在或者您的Grails应用程序正在运行的用户ID无法写入。
但更一般地说,你的root logger定义是错误的,你只需要一个日志级别(默认情况下你想要使用的级别,你没有指定更精确的规则)连接到所有的appender,例如< / p>
root {
error 'infoLog', 'errorLog', 'warnLog', 'debugLog'
}
各种appender的阈值将确保每个appender获得正确的消息:使用此配置debugLog
将接收所有消息(调试,信息,警告和错误); infoLog
会收到信息,警告和错误; warnLog
会收到警告和错误;并且errorLog
只会收到错误消息。