我正在尝试防止应用程序日志消息也出现在STDOUT中。
我有以下配置用于记录:
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
}
}
在我的应用程序文件上输出的日志很好。问题是catalina.out重复了它中的每一行。我不希望catalina.out增长太多。我只想在catalina.out中使用WARN及以上版本。我该怎么做?
更新:我更新了上述问题。以前我说过这些消息在catalina中记录了两次。我想出了如何解决这个问题。但是,它仍然记录了我不想要的消息。我只想要WARN消息。
更新2 :我想我知道这个问题,但我不知道如何解决它。 catalina.out日志文件未通过上面的配置进行配置。在默认的catalina.sh启动脚本中,所有标准输出都写入catalina.out文件。因此,我写入appLog
的日志消息也会写入stdout
。所以真正的问题是,基于上面的配置文件,为什么我的appLog的内容也被输出到stdout
。
答案 0 :(得分:1)
自我注意:RTFM !!!!
我正在阅读错误版本的Grails日志记录文档。最新版本为here,并且很好地解释了日志记录。我的需求也略有改变。所有ERROR(及以上)都记录在catalina.out(aka stdout)中。我的appLog正确记录了INFO中的所有内容。
如果我想将所有WARNing消息记录到catalina.out,我添加以下内容:
root{
warn()
}
以下内容从stdout中删除了我的所有应用程序日志:
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: '10MB'
console name: 'stdout', layout:pattern(conversionPattern: '%c{2} %m%n'), threshold: org.apache.log4j.Level.WARN
}
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 applog: ['grails.app', 'myapp', 'com.myapp']
}
答案 1 :(得分:0)
我想我知道发生了什么 - 我没有看到为你的网站配置警告及以上的记录器 - 我确实看到 appender 我认为你'请参考,但您需要配置具有所需级别的记录器才能使用它。请参阅here。
例如,如果您的站点是mysite.some.packages,则可以创建一个记录器,将站点中级别为> = warn的所有消息记录到rollfile:
warn rollingFile: "mysite"