log4j not working in grails - grails

I have the following configuration for log4j
log4j = {
// Example of changing the log pattern for the default console appender:
//
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
}
info 'grails.app.controllers'
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'
}
when I do log.info in my controller, I don't see any output being logged in to the console. Any reasons why ?

Just had to add grails.app and that did the trick

Related

Unable to have log4j write to RollingFileAppender in Grails

I have a grails 2.3.11 plugin and application with the following log4j configuration in the Config.groovy and when I run it on the server, info and error messages do not get logged into my rollingFileAppender. When I run the application locally the messages get logged susccessfully to the console though.
myapp.log does get created under my tomcat/logs folder. However, messsages do not get written into it.
Any suggestions?
log4j = {
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',
'mypackage'
info 'mypackage'
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%d{ABSOLUTE} %5p %c{1}:%L - %m%n')
appender new RollingFileAppender(
name:"rollingFileAppender",
maxFileSize:"1000KB",
maxBackupIndex: 10000,
file: "/usr/share/tomcat/logs/myapp.log",
layout:pattern(conversionPattern: "%d %p %F:%L - %m%n")
)
}
root{
environments{
development{
info 'stdout'
}
uat{
info 'rollingFileAppender'
error 'rollingFileAppender'
}
production{
info 'rollingFileAppender'
error 'rollingFileAppender'
}
}
}
}

logger in Grails always report wrong method and line number

I use Grails 2.4.4 and Oracle JDK 1.7.45
The below is my logger configuration in Config.groovy:
log4j.main = {
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%d{yy/MM/dd HH:mm:ss.SSS} %p %c{1}.%M(%L): %m%n')
}
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'
debug 'grails.app'
}
My controller is :
class HomeController {
def index() {
log.debug("HELLO, WORLD")
render "HELLO, WORLD"
}
}
The log result looks like below:
15/04/08 13:15:26.723 DEBUG HomeController.debug(128) : HELLO, WORLD
How do I config Config.groovy so that the log result can correctly display method and line number like below:
15/04/08 13:15:26.723 DEBUG HomeController.index(3) : HELLO, WORLD

log4j SMTPAppender sending mail with empty mail body

In my grails app I have lg4j config as follows
log4j = {
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,
'net.sf.ehcache.hibernate'
warn 'org.hibernate', 'grails.app', 'org.springframework', 'org.springframework.security'
info 'org.springframework', 'org.springframework.security', 'grails.app'
appenders {
def patternLayout = new PatternLayout()
patternLayout.setConversionPattern("[%r] %c{2} %m%n")
def mailAppender = new SMTPAppender()
mailAppender.setFrom("from#webbfontaine.am")
mailAppender.setTo("to#webbfontaine.am")
mailAppender.setSubject("[Error in application] [host:test.am]")
mailAppender.setSMTPHost("smtp.test.am")
mailAppender.setLayout(patternLayout)
mailAppender.setThreshold(org.apache.log4j.Level.WARN)
appender name:'mail', mailAppender
}
root {
warn 'mail', 'stdout'
}
}
It works fine and sends mail when I run my app with grails run-app, but when I deploy war under tomcat, I get emails with empty body. Is there some specific jar that should be under tomcat/libs? Any ideas?

Grails empty log file with log4j

it seems that my grails (2.1) log4j config isn't used properly and i can't find the problem.
The log file is created but empty and the stdout doesn't follow my pattern.
log4j = {
appenders {
rollingFile name: "myFileAppender", file: "LogFile.log", maxFileSize: 1024, layout:pattern(conversionPattern: '%d (%t) [%24F:%-3L:%-5p]%x %m%n')
console name: 'myStdoutAppender', layout:pattern(conversionPattern: '%d (%t) [%24F:%-3L:%-5p]%x %m%n')
}
warn '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'
debug 'org.my.stuff',
'grails.test',
'grails.app'
root = {
debug 'myFileAppender', 'myStdoutAppender'
additivity = true
}
}
Anyone an idea what i did wrong?
Don't assign to the root logger. Just call it with the supplied closure:
// No equals sign
root {
debug 'myFileAppender', 'myStdoutAppender'
additivity = true
}

Grails logging all to one file

I have an issue when i war my grails project to deploy on my production server there is a limitation that i only log to /var/log/tomcat5/catalina.out. This means that i have to make every log including stacktrace write to that one file. I've tried following other examples and it just doesn't seem to work i still get the error "permission denied on stacktrace.log"
This is my log4j config
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
appender.stacktractLog = "org.apache.log4j.FileAppender"
appender.'stacktraceLog.File'="/var/log/tomcat5/catalina.out"
appenders {
rollingFile name:'catalinaOut', maxFileSize:1024, fileName:"/var/log/tomcat5/catalina.out"
}
root {
error 'catalinaOut'
additivity = true
}
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'
}
Just modify your configuration:
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
appenders {
rollingFile name:'catalinaOut', maxFileSize:1024, fileName:"/var/log/tomcat5/catalina.out"
file name: 'stacktrace', file: "/var/log/tomcat5/catalina.out", layout: pattern(conversionPattern: '%c{2} %m%n')
}
root {
error 'catalinaOut'
additivity = true
}
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'
}
Can't help with your current problem but I suggest you change the rollingFile properties. Current setting will only give a 1kb file that over writes it's self.
try:
rollingFile name:'catalinaOut', maxFileSize:${10*1024*1024},maxBackupIndex:100,fileName:"/var/log/tomcat5/catalina.out"
This will give you 100 10MB files or about a gig worth of logs.

Resources