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

log4j2升级后出现的内部Grails日志

方博学
2023-03-14

我正在将grails 2.5.4应用程序中的log4j依赖项从1.2.17升级到最新版本2.17.1

我从BuildConfig.groovy中排除了log4j,并添加了与v2.17.1相关的以下依赖项:

  • log4j api
  • log4j核心
  • log4j-1.2-api
  • log4j-slf4j-impl

我用的是log4-1。x桥接以减少总体代码基更改。

我添加了以下log4j2。conf目录下的属性文件:

rootLogger.level = INFO
rootLogger.additivity = false
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n

但在应用程序启动和使用期间,我注意到控制台中添加了额外的日志:

..........................................Attempting to load [0] user defined plugins
Grails plug-in [dataBinding] with version [2.5.4] loaded successfully
Grails plug-in [i18n] with version [2.5.4] loaded successfully
Grails plug-in [restResponder] with version [2.5.4] loaded successfully
Grails plug-in [core] with version [2.5.4] loaded successfully
Grails plug-in [greenmail] with version [1.3.4] loaded successfully
Grails plug-in [executor] with version [0.3] loaded successfully
Grails plug-in [webxml] with version [1.4.1] loaded successfully
Grails plug-in [cacheHeaders] with version [1.1.7] loaded successfully
Grails plug-in [browserDetection] with version [2.8.1] loaded successfully
Grails plug-in [console] with version [1.5.12] loaded successfully
Grails plug-in [remotePagination] with version [0.4.8] loaded successfully
Grails plug-in [tomcat] with version [7.0.42] loaded successfully
...

一些Hibernate日志也出现了(由于存在域信息,所以没有添加日志)

看起来内部Grails日志被附加到控制台。在应用程序使用过程中,出现了以下类型的日志:

FrameworkServlet 'gsp': initialization started
GSP servlet initialized
FrameworkServlet 'gsp': initialization completed in 39 ms
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/favicon.ico
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
Invocation of <r:resource> for a resource that apparently doesn't exist: /assets/spinner.gif
...

似乎将additivity属性设置为false不起作用。我也尝试过使用添加剂,但没有成功。

我注意到Config.groovy中的log4j配置也没有被读取。

    log4j = {
  appenders {


    'null' name: 'empty'

    environments {
      development {
        'null' name: 'stacktrace'

        appender name: "appLog",
            new org.apache.log4j.DailyRollingFileAppender(
                threshold: org.apache.log4j.Level.INFO,
                datePattern: "'.'yyyy-MM-dd",
                file: "/tmp/test.log",
                layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n'))
        root {
          info stdout
        }
      }

      production {
        file name: 'stacktrace', file: "/logs/stacktrace.log".toString()


        root {
          error 'stdout'
          info stdout
        }
      }

    }

  }

//  off 'ErrorsController & ResourceMeta'
  off 'org.grails.plugin.resource.ResourceMeta',
      'org.springframework.security.saml.metadata'

  error empty: ['grails.app.services.org.grails.plugin.resource',
                'grails.app.taglib.org.grails.plugin.resource',
                'grails.app.resourceMappers.org.grails.plugin.resource',
                'grails.app.resource.ResourceMeta']

  info 'grails.plugin.springsecurity.web.filter.DebugFilter'

  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'

  debug 'org.springframework.security.saml'

  warn 'org.mortbay.log'
  environments {
    development {
      //info additivity: true, appLog: "grails.app"
    }
  }


  root {
    additivity = false
  }
}

有人能指导我做错了什么吗?我如何阻止内部日志追加?

共有1个答案

高山
2023-03-14

首先,在根记录器上指定相加性是没有意义的。请参阅Log4j 2配置-相加性了解相加性的工作原理。

开箱即用的Log4j 1不支持通过Groovy进行配置。据我所知,你们提供了一个基本的log4j 1。x配置,然后Groovy工具正在修改该配置。如果不看工具文档,我无法确定所有语法的含义。然而,很明显,这些线条

  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'

在错误级别声明单个记录器。

因此,您需要在配置中添加行,例如

logger.hibernate.name = org.hibernate
logger.hibernate.level = error

以匹配Groovy代码的功能。如果不指定可加性,它将默认为true,消息将被路由到与根记录器关联的appender。

 类似资料:
  • 我使用Log4j2(v2.17.2)直接向kafka发送信息,并使用XML创建配置(正如许多文章提到的那样,XML可以处理更多的配置选项,而属性不能)。我的问题是,我的控制台中充满了不相关的信息日志行(例如): 我已经从programmetically-change-log-level-in-log4j2中试用了所有技术,没有对日志进行任何更改: 有人有运气从INFO中获得日志级别降低吗?我真的不

  • 我已将小应用程序更新到Grails 3.2.3。经过一些问题,现在解决了Grails 3. x更新-bootRun失败 但不幸的是,该应用程序无法使用。在我的高端笔记本电脑ThinkPad 460p上,我甚至无法加载应用程序的主页。它正在加载很长时间,然后CSS样式根本没有加载。圣杯运行应用程序或IDEA运行配置没有错误消息。 我不知道现在该怎么做,这里描述了所有配置Grails 3.x更新-bo

  • 0.8.0 [!]从 alibaba/weex-ui 迁移到 apcahe/incubator-weex-ui 0.7.1 [+] wxc-slider-bar 新增 wxcSliderBarTouchEnd 事件. [!] 修复 wxc-mask 输入时候抖动问题 [!] 修复调试时候 console 不显示二维码的问题 0.7.0 [-] 移除支付宝判断,防止审核问题 issue/467 [!

  • 5.0.170927 [核心] 增加是否开放注册设置 增加已经安装模板文件检测是否已经删除功能 增加模板卸载风险提示 增加钩子同步功能 增加用户操作同步功能 #291 增加网站信息【$site_info】变量,可以在插件中使用 #310 修复添加管理员不能登录 #110 优化 admin.js 优化后台模板设计排版 优化后台加密码设置 返回按钮统一优化 优化 url 美化时规划选择 修复api模块

  • 6.0.0-alpha0 [核心] 升级ThinkCMF 5.1到ThinkPHP 6.0

  • 在将Grails版本从2.3.6升级到2.4.5之后,我现在在运行Geb Spock测试时遇到了一个异常。 我记得在Grails 2.3.6中最初设置Geb时遇到过这个异常,其中BuildConfig和GebConfig文件没有正确配置。然而,在重新检查Geb所需的必要插件和依赖项时,我没有注意到Grails 2.4.5有任何不同。此外,我将依赖项解析从Ivy切换到Maven,因此我再次检查Mav