gpt4 book ai didi

linux - Log4J 日志消息被记录到 grails 应用程序的应用程序日志和标准输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:40 26 4
gpt4 key购买 nike

我也在尝试阻止应用日志消息发送到 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 中记录了两次。我想出了解决办法。但是,它仍然会记录一次我不想要的消息。我只想要警告消息。

更新 2:我想我知道问题所在,但不知道如何解决。 catalina.out 日志文件不是通过上面的配置配置的。在默认的 catalina.sh 启动脚本中,所有标准输出都写入 catalina.out 文件。因此,正在写入 appLog 的我的日志消息也正在写入 stdout。所以真正的问题是,基于上面的配置文件,为什么我的 appLog 的内容也被输出到 stdout

最佳答案

self 注意:RTFM!!!!

我读错了版本的 Grails 日志文档。最新版本是here日志记录解释得很好。我的需求也略有改变。所有错误(及以上)都记录在 catalina.out(又名标准输出)中。我的 appLog 正确记录了 INFO 中的所有内容。

如果我想将所有警告消息记录到 catalina.out,我添加以下内容:

root{
warn()
}

以下从标准输出中删除了我所有的应用程序日志:

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']
}

关于linux - Log4J 日志消息被记录到 grails 应用程序的应用程序日志和标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com