srkiNZ84
srkiNZ84

Reputation: 3568

grails how to configure log4j to log to tomcat logs

Every time that I start up my grails application, using the production environment on my tomcat6 server I see the following error in /var/log/tomcat6/catalina.out:

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: stacktrace.log (Permission denied)
...
...

I gather that this is becaues log4j is attempting to create a log file and doesn't have the required permissions.

Ideally I would like the log files for my application to go to either the existing tomcat log (/var/log/tomcat6/catalina.out) or to go to a separate file in the /var/log/tomcat6 directory.

How can I change the location of the log4j logs with the minimal amount of configuration possible? i.e. I don't want to define a complete appender with it's own output pattern, I just want to change the location of the log files.

Upvotes: 3

Views: 7137

Answers (1)

Igor Artamonov
Igor Artamonov

Reputation: 35961

You can setup logging to use file by configuring it in grails-app/conf/Config.groovy:

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

at this case all log event with level info and above will be pushed into both file /var/log/tomcat6/mylog.log and stdout (that tomcat will add to catalina.out by himself)

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

Upvotes: 3

Related Questions