From 7593e348983b6c30f55d9e33fe4820d03ff34e40 Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Sun, 8 Mar 2020 20:09:53 +0800 Subject: [PATCH] Add standard output override --- .../net.mamoe.mirai/utils/MiraiLogger.kt | 21 ++++++++++++++----- .../net/mamoe/mirai/utils/MiraiLoggerJvm.kt | 11 ++++++---- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt index f912a8e0f..19303e301 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt @@ -8,10 +8,14 @@ */ @file:Suppress("unused") +@file:JvmMultifileClass +@file:JvmName("Utils") package net.mamoe.mirai.utils import net.mamoe.mirai.Bot +import kotlin.jvm.JvmMultifileClass +import kotlin.jvm.JvmName import kotlin.jvm.JvmOverloads @@ -204,7 +208,8 @@ inline fun MiraiLogger.error(lazyMessage: () -> String?, e: Throwable?) { * * 不应该直接构造这个类的实例. 请使用 [DefaultLogger], 或使用默认的顶层日志记录 [MiraiLogger.Companion] */ -expect open class PlatformLogger @JvmOverloads internal constructor(identity: String? = "Mirai") : MiraiLoggerPlatformBase +expect open class PlatformLogger @JvmOverloads constructor(identity: String? = "Mirai") : MiraiLoggerPlatformBase + /** * 不做任何事情的 logger, keep silent. @@ -237,14 +242,19 @@ class SimpleLogger( } companion object { - inline operator fun invoke(crossinline logger: (message: String?, e: Throwable?) -> Unit): SimpleLogger = SimpleLogger(null, logger) + inline operator fun invoke(crossinline logger: (message: String?, e: Throwable?) -> Unit): SimpleLogger = + SimpleLogger(null, logger) - inline operator fun invoke(identity: String?, crossinline logger: (message: String?, e: Throwable?) -> Unit): SimpleLogger = + inline operator fun invoke( + identity: String?, + crossinline logger: (message: String?, e: Throwable?) -> Unit + ): SimpleLogger = SimpleLogger(identity) { _, message, e -> logger(message, e) } - operator fun invoke(logger: (priority: LogPriority, message: String?, e: Throwable?) -> Unit): SimpleLogger = SimpleLogger(null, logger) + operator fun invoke(logger: (priority: LogPriority, message: String?, e: Throwable?) -> Unit): SimpleLogger = + SimpleLogger(null, logger) } override fun verbose0(message: String?) = logger(LogPriority.VERBOSE, message, null) @@ -266,7 +276,8 @@ class SimpleLogger( * @see disable 关闭 */ @Suppress("MemberVisibilityCanBePrivate") -class MiraiLoggerWithSwitch internal constructor(private val delegate: MiraiLogger, default: Boolean) : MiraiLoggerPlatformBase() { +class MiraiLoggerWithSwitch internal constructor(private val delegate: MiraiLogger, default: Boolean) : + MiraiLoggerPlatformBase() { override val identity: String? get() = delegate.identity /** diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/MiraiLoggerJvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/MiraiLoggerJvm.kt index 0f8bf91c6..1555c0741 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/MiraiLoggerJvm.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/MiraiLoggerJvm.kt @@ -15,9 +15,12 @@ import java.util.* /** * JVM 控制台日志实现 */ -actual open class PlatformLogger @JvmOverloads internal actual constructor( - override val identity: String? +actual open class PlatformLogger @JvmOverloads constructor( + override val identity: String? = "Mirai", + val output: (String) -> Unit ) : MiraiLoggerPlatformBase() { + actual constructor(identity: String?) : this(identity, ::println) + override fun verbose0(message: String?) = println(message, LoggerTextFormat.RESET) override fun verbose0(message: String?, e: Throwable?) { if (message != null) verbose(message.toString()) @@ -52,9 +55,9 @@ actual open class PlatformLogger @JvmOverloads internal actual constructor( val time = SimpleDateFormat("HH:mm:ss", Locale.SIMPLIFIED_CHINESE).format(Date()) if (identity == null) { - println("$color$time : $value") + output("$color$time : $value") } else { - println("$color$identity $time : $value") + output("$color$identity $time : $value") } } }