我看到一个奇怪的行为。 每当我用下面的方法注解一个方法: @Cacheable("contacts") (主类用@EnableCaching注解)在任何方法中,我把这个logger变量作为null : private val logger = LoggerFactory.getLogger(ProductCriteria::class.java) 如果我把它拿出来,它已经不是null了。 从我的调试,似乎cglib正在创建一些类的代理,以提供缓存。 但是,这个代理没有正确初始化,因为它似乎。 是由设计,一个限制还是我失去了一些东西?
出于调试的目的,我的代码中有一部分我想记录一个方法的名字,如下所示: val LOG = LogManager.getLogger(SomeClass::class.java.name) //… fun someMethod() { LOG.debug(Thread.currentThread().getStackTrace()[1].getMethodName()) 我怎么能把这个作为一个简单而清晰的表达? 就像是: LOG.debug(getMethodName()) 顺便说一下,我尝试过使用AspectJ,但是我使用Eclipse,Kotlin插件与1.1.1一起使用。 AspectJ将需要KAPT(据我所知),它不适用于1.1.1的Maven(我也在使用它)。
我有一个kotlin文件,有几个包级函数,没有任何类。 我想添加日志记录到这个类,但很难找到一个优雅的方式给记录器一个标识符。 这是一个例子 package com.example.myproject.my_package import org.slf4j.LoggerFactory private val log = LoggerFactory.getLogger("com.example.myproject.my_package") fun bla(term: String) { log.info("invoked with $term") } 有很好的最佳实践来使用类来找到一个好的标识符: 链接1 链接2 。 如果没有课程,你最喜欢的方法是什么? 我想避免手写标识符,并在包名称更改时进行调整。 有没有办法在kotlin中获取包名?
为了在我的Kotlin项目中进行日志记录 ,我正在使用kotlin-logging ,但是我错过了一个非常中心的观点:如何配置记录器的日志级别? 默认情况下,它被设置为信息,我想将其设置为调试。 由于在Github页面上没有任何关于GitHub页面的内容,也没有任何方法来以编程方式设置关卡,所以我查看了slf4j,因为kotlin-logging是一个包装。 显然我必须像这样设置一个系统属性: -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG 但是我不知道如何在Kotlin做到这一点。 任何人都可以帮助我?