代码之家  ›  专栏  ›  技术社区  ›  Azder

在Grails应用程序外部的Grails类中注入日志对象

  •  18
  • Azder  · 技术社区  · 15 年前

    我在我的Grails项目中有一个src/groovy类。

    如何为该类生成一个注入了正确记录器的日志字段?

    在Grails中有公共日志记录还是只有log4j?

    3 回复  |  直到 11 年前
        1
  •  10
  •   Burt Beckwith    15 年前

    你可以像普通的Java类一样添加它:

    Logger log = Logger.getLogger(getClass()) // log4j
    

    Log log = LogFactory.getLog(getClass()) // commons logging
    
        2
  •  47
  •   str    11 年前

    GRAILS 1 X

    做同样事情的一个更绝妙的方法是:

    private static log = LogFactory.getLog(this)
    

    这利用了这样一个事实 this 在静态上下文中,引用 Class 对象,因此上面的行可以从一个类复制粘贴到另一个类,而不需要修改。

    GRAILS 2 X

    使用 @Log4j 在groovy 1.8中引入的注释。这将增加一个 log 财产

    import groovy.util.logging.Log4j
    @Log4j 
    class MyClass {
    
      def doIt() {
        log.info 'hello'
      }
    }
    

    使用注释的一个好处是记录器自动转换如下调用:

    log.info 'hello'
    

    到:

    if (log.isInfoEnabled() {
      log.info 'hello'
    }
    
        3
  •  0
  •   Olivier Gourment    14 年前

    使用标准Log4J的新记录器(GETCHILL())工作,但是为我记录了“java. Lang.Car类”(使用GRAIL1.2.1)。子日志插件和@withlog解决了这个问题。见 http://www.grails.org/plugin/sublog . 这个插件也不会使跟踪成为调试和致命错误…!