Kotlin没有与Java中使用的静态字段相同的概念.在Java中,普遍接受的日志记录方式是:
public class Foo {
private static final Logger LOG = LoggerFactory.getLogger(Foo.class);
}
Run Code Online (Sandbox Code Playgroud)
问题是在Kotlin中执行日志记录的惯用方法是什么?
为了在我的Kotlin项目中进行日志记录,我使用的是kotlin-logging,这非常好用但是我错过了一个非常重要的问题:如何配置记录器的日志级别?
默认情况下,它设置为info,我想将其设置为调试.由于Github页面上没有任何内容,也没有任何方法可以通过编程方式设置级别,所以我查看了slf4j,因为kotlin-logging是一个包装器.
显然我必须像这样设置一个系统属性:
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
Run Code Online (Sandbox Code Playgroud)
但是我不知道怎么在Kotlin这样做.
有人可以帮帮我吗?
class LogToFile(context: Context) {
companion object: KLogging()
val formatter = SimpleFormatter()
// val logger = LoggerFactory.getLogger("MyLog") **WITH THIS LINE...**
val logger = Logger.getLogger("MyLog") //this line WORKS
val dest = context.applicationContext.getExternalFilesDir(null);
val fh = FileHandler(dest.path.plus(File.pathSeparator).plus("data.txt"))
init {
//..THIS LINE DOESN'T WORK (NO addHandler is there some ekvivalent for the LoggerFactory?)//
logger.addHandler(fh)
fh.formatter = formatter
}
fun write(logString: String) {
try {
logger.info(logString)
} catch (e: SecurityException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
Run Code Online (Sandbox Code Playgroud)
**这是我拥有的一个功能代码,它接收日志并将其写入文件。
这几天一直没找到办法,怎么用 KotlinLogger 做同样的事情。 …