当前位置: 首页 > 知识库问答 >
问题:

Grails log4j appender配置似乎被忽略了

印成天
2023-03-14

我试图自定义Grailshtml" target="_blank">应用程序的日志配置,但appender(及其布局模式)似乎被忽略了。

在配置中。非常棒:

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实际上考虑了logger部分(例如,如果我对hibernate的debug和trace行进行注释,那么hibernate语句的记录将按预期停止)。

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

log.info("test")

在代码中我会得到

test

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

我在部分中添加了“debug=true”,还设置了“org”。阿帕奇。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

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

共有1个答案

谷梁晟
2023-03-14

尝试将apender应用到你的信息级别

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

我想你缺少的是伐木工人不知道在哪里发送信息。

一般来说你可以通过

error myAppender:      "grails.app.controllers.BookController",
      myFileAppender:  ["grails.app.controllers.BookController",
                        "grails.app.services.BookService"],
      rollingFile:     "grails.app.controllers.BookController"

或者在所有级别的根级别定义它。查看文档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
}
 类似资料:
  • JNA还加载正确的库。 这里有人知道为什么不起作用吗?是因为我使用的是带有清单的jar应用程序文件吗? 有人有类似的问题吗?

  • 我试图从管理各种Tomcat实例的应用程序生命周期的第三方工具的正常应用程序日志中筛选出启动(/关闭)事件。基础是(2.12.1),中使用,用于简单的追加器(下面的示例进行了大量简化,包括硬编码值): 相应的记录器如下所示: 当我启动实例时,将创建两个日志文件。但是,只有应用程序日志文件(application appender)包含条目,其中包括我感兴趣的要过滤掉的条目: 有什么想法,如何调试,

  • 我们在java ee应用程序中使用Log4j2。我们使用一个库,其中日志是根据SLF4J编程的。在这个库中有一个类,它记录了很多我不想要的东西- 我的日志4J2。xml如下所示: 但是,BaseSerializingTranscoder仍然记录错误。如果我做一个简单的测试,并将BaseSerializingTranscoder中找到的日志代码放在测试函数中,我会看到记录器是通过org检索的。slf

  • 我试图在我的mongo DB中运行一个聚合语句。我有一个文档,其结构(至少)如下: 我想运行一个聚合语句,聚合给定'keyword groupid'和给定'date'间隔的'ranking'字段。 我一直在尝试使用以下聚合命令: 此命令执行时不会出错并返回结果。如果我尝试更改'keyword groupid'字段的值,该命令将返回一个不同的值,因此我假设$match语句适用于该字段(NumberL

  • 我有一个适用于Android和iOS的应用程序。有很多复杂的SQL查询,所以我有一个c层来生成查询,这样就可以在android和ios上使用这种逻辑。 一切都很好,但我注意到在Android系统上,第二类由于某种原因不适合我。 我有一个项目列表,我想按日期排序,然后第二次按标题排序。在iOS上,这很好,在Android系统上,虽然按日期排序,标题不是第二次按标题排序。 查询和数据库文件在两个平台上

  • 我在配置Spring MessageSource以忽略我的系统区域设置时遇到问题。当我使用null locale参数调用getMessage时,我希望我的MessageSource选择默认属性文件messages.properties.相反,它选择messages_en.properties.当我将此属性文件的名称更改为messages_fr.properties然后选择默认属性文件。我的系统区域