I am trying to prevent the app log messages from going out to STDOUT also.
I have the following configuration for logging:
log4j = {
appenders {
rollingFile name: 'applog', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p%c{1} - %m%n'), maxFileSize: '1MB'
file name: 'stacktrace', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}stacktrace.out".toString(), layout: pattern(conversionPattern: '%c{2} %m%n')
console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
}
error stacktrace: "StackTrace"
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'
info 'grails.app'
root {
info applog
error 'stdout'
additivity=false
}
}
The logs that are outputting on my application file are fine. The problem is that the catalina.out duplicates each line in it. I dont want the catalina.out to grow too much. And I only want only WARN and above in the catalina.out. How do I do this?
Update: I updated the above question. Previously I indicated the messages were logged twice in catalina. I figured out how to fix that. However, it still logs the message once which I dont want. I only want WARN messages.
Update 2: I think I know the issue but I dont know how to solve it. The catalina.out log file is not configured via the config above. In the default catalina.sh start script, all standard output is written to the catalina.out file. So my log messages that are being written to the appLog are also being written to stdout. So the real problem is, based on the above config file, why are the contents of my appLog also being outputted to stdout.
Note to self: RTFM!!!!
I was reading the wrong version of the Grails logging document. The latest version is here and logging is explained well. My needs slightly changed also. All ERRORs (and above) are logged in catalina.out (aka stdout). My appLog logs everything in INFO properly.
If I wanted to log all WARNing message to catalina.out, I add the following:
The following removes all my application logs from the stdout: