``` fun <T : Any> unwrapCompanionClass(ofCl...
# random
j
Copy code
fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {
    return if (ofClass.enclosingClass != null && ofClass.enclosingClass.kotlin.companionObject?.java == ofClass) {
        ofClass.enclosingClass
    } else {
        ofClass
    }
}

fun <R : Any> R.getLog(): Lazy<Logger> {
    return lazy { LoggerFactory.getLogger(unwrapCompanionClass(this.javaClass).name) }
}

class Test {
    val log by getLog()
    init {
        <http://log.info|log.info>("testing")
    }
    fun method() {
        <http://log.info|log.info>("method")
    }
}