Add standard output override

This commit is contained in:
Him188 2020-03-08 20:09:53 +08:00
parent 4cd7487253
commit 7593e34898
2 changed files with 23 additions and 9 deletions

View File

@ -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
/**

View File

@ -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")
}
}
}