2011-07-05 25 views
2

每当我启动我的grails应用程序时,使用我的tomcat6服务器上的生产环境,我在/var/log/tomcat6/catalina.out中看到以下错误:grails如何配置log4j登录到tomcat日志

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日志的位置?即我不想用自己的输出模式定义完整的appender,我只是想更改日志文件的位置。在这种情况下

log4j = { 
    appenders { 
     file name:'file', file: '/var/log/tomcat6/mylog.log' 
    } 
    root { 
     info 'stdout', 'file' 
    } 
} 

所有日志事件与info级以上将被推到两个文件/var/log/tomcat6/mylog.log和stdout(即tomcat会增加:

回答

3

您可以设置日志通过配置它grails-app/conf/Config.groovy使用文件catalina.out由他本人)

参见:http://grails.org/doc/latest/guide/3.%20Configuration.html#3.1.2%20Logging

+11

可避免硬编码路径到Tomcat的日志目录这样的:'文件名:“文件”,文件:(System.getProper ty('catalina.base')?:'target')+'/ logs/mylog.log' - 这可以在run-app或Tomcat中使用,因为如果没有设置catalina.base属性,它会写入日志目标/日志 –

+0

也不记录在Tomcat重定向控制台记录器到catalina.out? –

+0

我已经将appender文件属性设置为'/var/log/tomcat6/mylog.log',并创建了日志文件并记录到日志文件。不过,我仍然在'catalina.out'日志中看到上述错误。有没有人知道一个快速的方法,我可以告诉哪个文件log4j试图访问时,它会引发此错误? – srkiNZ84