grails如何配置log4j以登录到tomcat日志

grails如何配置log4j以登录到tomcat日志,grails,log4j,tomcat6,Grails,Log4j,Tomcat6,每次使用tomcat6服务器上的生产环境启动grails应用程序时,我都会在/var/log/tomcat6/catalina.out中看到以下错误: log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: stacktrace.log (Permission denied) ... ... 我推测这是因为log4j正在尝试创建日志文件,并且没有所需的权限 理想情况下,我希望应用程序的日志文件转到现有

每次使用tomcat6服务器上的生产环境启动grails应用程序时,我都会在/var/log/tomcat6/catalina.out中看到以下错误:

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: stacktrace.log (Permission denied)
...
...
我推测这是因为log4j正在尝试创建日志文件,并且没有所需的权限

理想情况下,我希望应用程序的日志文件转到现有的tomcat日志(/var/log/tomcat6/catalina.out)或转到/var/log/tomcat6目录中的单独文件


如何以尽可能少的配置更改log4j日志的位置?i、 e.我不想用自己的输出模式定义一个完整的appender,我只想更改日志文件的位置。

您可以通过在
grails app/conf/Config.groovy中配置文件来设置日志以使用该文件:

log4j = {
    appenders {
        file name:'file', file: '/var/log/tomcat6/mylog.log'
    }
    root {
        info 'stdout', 'file'
    }
}
在这种情况下,所有级别为
info
及以上的日志事件都将被推送到文件
/var/log/tomcat6/mylog.log
和标准输出(tomcat将自己添加到
catalina.out


请参阅:

您可以避免像这样硬编码Tomcat日志目录的路径:
文件名:'file',文件:(System.getProperty('catalina.base')?:'target')+'/logs/mylog.log'
-这在运行应用程序或Tomcat中有效,因为如果未设置
catalina.base
属性,它会将日志写入目标/logsal,那么登录Tomcat不会将控制台日志重定向到catalina.out吗?我已将appender文件属性设置为'/var/log/tomcat6/mylog.log',这创建了日志文件并正在进行日志记录去吧。然而,我仍然在“catalina.out”日志中看到上述错误。有没有人知道一种快速的方法,当log4j抛出这个错误时,我可以判断它试图访问哪个文件?