我注意到在控制器级别指定一个记录器就足够了。
import ...
val logger = KotlinLogging.logger { }
@RestController
后续服务可以访问该记录器,而无需为自己指定记录器。
换句话说,如果一个服务抱怨不能调用logger.info {"..."}
,那么将val logger = KotlinLogging.logger { }
添加到该服务的调用控制器中就足够了。
为什么?
当您创建这样的变量时,您基本上是在创建一个可以从代码中的任何地方访问的顶级变量。这就是为什么如果你把它添加到控制器,服务将能够使用它。
然而,这并不意味着你应该这样做。创建KotlinLogger的推荐方法是使用伴侣对象,如下所示:
import ...
@RestController
class WhateverController {
companion object {
private val logger = KotlinLogging.logger {}
}
}
这意味着您将为每个类设置一个日志记录器,正如您应该的那样。
我必须更新这个,因为Jaoa所说的the preferred way
不是开发人员自己说的:
https://github.com/MicroUtils/kotlin-logging/wiki obtaining-a-logger
The preferred way to obtain a logger is as follows:
// Place definition above class declaration, below imports,
// to make field static and accessible only within the file
private val logger = KotlinLogging.logger {}