Slf4j注释会在Grails中运行吗?

unf*_*red 3 grails groovy logging log4j slf4j

我有一个Groovy库,使用@Slf4jGroovy提供的注释进行记录:

@Slf4j
class SomePogo {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

如果我将这个lib放到Grails(2.4.2)应用程序中,默认的基于log4j的日志记录系统是否会在这些类中获取日志语句?或者我是否需要将log4j记录器添加到我的所有类中?

Dón*_*nal 6

所有Grails工件(控制器,域类,taglib,服务等)都会log自动添加一个静态记录器字段(已命名).

类中src/groovy还有一个名为log自动添加的记录器字段,但在这种情况下,记录器是非静态的.因此,您需要显式添加记录器的唯一时间是您要从类中静态记录某些内容src/groovy.在这种情况下,您需要注释类@Slf4j(或@Log4j)以便用静态log字段替换Grails添加的非静态记录器.

  • 添加自己的记录器(尤其是工件)的另一个好处是控制记录器名称 - 我总是忘记工件的约定,并且更喜欢只使用完整的类名+包,所以我通常添加`static Logger log = LoggerFactory.getLogger (this)`或`protected final Logger log = LoggerFactory.getLogger(getClass().name)`然后我知道我的所有记录器都在`com.burtbeckwith.appname` /`grails.plugin.pluginname`/etc下. (2认同)