gpt4 book ai didi

Grails log4j appender 配置似乎被忽略了

转载 作者:行者123 更新时间:2023-12-04 23:54:39 26 4
gpt4 key购买 nike

我正在尝试自定义 Grails 应用程序的日志记录配置,但似乎忽略了附加程序(及其布局模式)。

在 Config.groovy 中:

log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%c{2} %m%n')
file name: 'fileLogger', file: 'application.log', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %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'

info 'grails.app'
debug 'org.hibernate.SQL'
trace 'org.hibernate.type'
}

Log4J 实际上会考虑记录器部分(例如,如果我为 hibernate 注释调试和跟踪行,则 Hibernate 语句的日志记录会按预期停止)。

但是我一直在尝试不同版本的 appenders 部分,似乎都没有考虑过,实际上应用于控制台的格式只包含消息本身(例如,如果我写
log.info("test")

在代码中我会得到
test

在控制台中,日志文件中没有任何内容。

我在该部分添加了“debug=true”,并将“org.apache.log4j”设置为跟踪,但似乎没有任何改变。

这可能是微不足道的,但我无法弄清楚。 :/

我正在使用 Grails 2.3.0RC2。

所以我按照 Alidad 的建议做了,并将我的配置切换到:
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss,SSS Z} [%t] %-5p %c{1}:%L %x - %m%n')
}

root {
info 'stdout'
}

error stdout:
'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'

info stdout:
'grails.app'
}

然而,虽然这是一个改进(我的布局没有被忽略)它也会导致所有内容被记录两次:
2013-09-08 18:00:19,447 +0100 [localhost-startStop-1] INFO  BootStrap:152  - Init completed
Init completed
2013-09-08 18:00:19,641 +0100 [localhost-startStop-1] INFO NimbleBootStrap:152 - Creating default user account with username:user
Creating default user account with username:user

实际上,即使我将“根”部分注释掉,也会发生这种情况。

最佳答案

尝试将 appender 应用于您的信息级别

   log4j = {
...
root{
info 'stdout'
}
...
}

我认为您缺少的是记录器不知道将消息发送到哪里。

通常你可以通过
error myAppender:      "grails.app.controllers.BookController",
myFileAppender: ["grails.app.controllers.BookController",
"grails.app.services.BookService"],
rollingFile: "grails.app.controllers.BookController"

或在所有级别的根级别定义它。看看 Documentation 4.1.2 记录
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss,SSS Z} [%t] %-5p %c{1}:%L %x - %m%n')
}


error stdout:
'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'

info stdout:
'grails.app' , additivity: false
}

关于Grails log4j appender 配置似乎被忽略了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685305/

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