From 0229dbe0df8473d68bf5e1c0c79659609a32d10c Mon Sep 17 00:00:00 2001 From: tursom Date: Sat, 30 Nov 2019 10:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log/src/main/kotlin/cn/tursom/log/Slf4j.kt | 4 +-- log/src/main/kotlin/cn/tursom/log/TrySlf4j.kt | 9 +++++++ .../kotlin/cn/tursom/log/impl/Slf4jImpl.kt | 10 +++++-- .../kotlin/cn/tursom/log/impl/TrySlf4jImpl.kt | 27 +++++++++++++++++++ web/build.gradle | 2 +- 5 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 log/src/main/kotlin/cn/tursom/log/TrySlf4j.kt create mode 100644 log/src/main/kotlin/cn/tursom/log/impl/TrySlf4jImpl.kt diff --git a/log/src/main/kotlin/cn/tursom/log/Slf4j.kt b/log/src/main/kotlin/cn/tursom/log/Slf4j.kt index 92e989b..24c7e76 100644 --- a/log/src/main/kotlin/cn/tursom/log/Slf4j.kt +++ b/log/src/main/kotlin/cn/tursom/log/Slf4j.kt @@ -4,6 +4,6 @@ import org.slf4j.Logger interface Slf4j { val log: Logger - val logger: Logger get() = log - val sfl4j: Logger get() = log + val logger get() = log + val sfl4j get() = log } \ No newline at end of file diff --git a/log/src/main/kotlin/cn/tursom/log/TrySlf4j.kt b/log/src/main/kotlin/cn/tursom/log/TrySlf4j.kt new file mode 100644 index 0000000..4bac150 --- /dev/null +++ b/log/src/main/kotlin/cn/tursom/log/TrySlf4j.kt @@ -0,0 +1,9 @@ +package cn.tursom.log + +import org.slf4j.Logger + +interface TrySlf4j { + val log: Logger? + val logger get() = log + val sfl4j get() = log +} \ No newline at end of file diff --git a/log/src/main/kotlin/cn/tursom/log/impl/Slf4jImpl.kt b/log/src/main/kotlin/cn/tursom/log/impl/Slf4jImpl.kt index 32c2ac0..74a44e9 100644 --- a/log/src/main/kotlin/cn/tursom/log/impl/Slf4jImpl.kt +++ b/log/src/main/kotlin/cn/tursom/log/impl/Slf4jImpl.kt @@ -3,11 +3,17 @@ package cn.tursom.log.impl import cn.tursom.log.Slf4j import org.slf4j.Logger import org.slf4j.LoggerFactory +import kotlin.reflect.KClass import kotlin.reflect.jvm.jvmName class Slf4jImpl(name: String? = null) : Slf4j { - override val log: Logger = LoggerFactory.getLogger(name ?: if (this::class.java != Slf4jImpl::class.java) { - val clazz = this::class + constructor(clazz: Class<*>?) : this(clazz?.name) + constructor(clazz: KClass<*>?) : this(clazz?.jvmName?.let { + if (clazz.isCompanion) it.dropLast(10) else it + }) + + override val log: Logger = LoggerFactory.getLogger(name ?: if (this.javaClass != Slf4jImpl::class.java) { + val clazz = this.javaClass.kotlin clazz.jvmName.let { if (clazz.isCompanion) it.dropLast(10) else it } diff --git a/log/src/main/kotlin/cn/tursom/log/impl/TrySlf4jImpl.kt b/log/src/main/kotlin/cn/tursom/log/impl/TrySlf4jImpl.kt new file mode 100644 index 0000000..d9dafea --- /dev/null +++ b/log/src/main/kotlin/cn/tursom/log/impl/TrySlf4jImpl.kt @@ -0,0 +1,27 @@ +package cn.tursom.log.impl + +import cn.tursom.log.TrySlf4j +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import kotlin.reflect.KClass +import kotlin.reflect.jvm.jvmName + +class TrySlf4jImpl(name: String? = null) : TrySlf4j { + constructor(clazz: Class<*>?) : this(clazz?.name) + constructor(clazz: KClass<*>?) : this(clazz?.jvmName?.let { + if (clazz.isCompanion) it.dropLast(10) else it + }) + + override val log: Logger? = try { + LoggerFactory.getLogger(name ?: if (this.javaClass != TrySlf4jImpl::class.java) { + val clazz = this.javaClass.kotlin + clazz.jvmName.let { + if (clazz.isCompanion) it.dropLast(10) else it + } + } else { + throw NotImplementedError("") + }) + } catch (e: Throwable) { + null + } +} \ No newline at end of file diff --git a/web/build.gradle b/web/build.gradle index 27d7097..ac3fabb 100644 --- a/web/build.gradle +++ b/web/build.gradle @@ -1,4 +1,4 @@ dependencies { implementation project(":") - compileOnly project(":log") + compileOnly group: 'org.slf4j', name: 'slf4j-api', version: '1.7.29' } \ No newline at end of file