mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-25 06:50:09 +08:00
Review MiraiLogger:
- Replace top-level `DefaultLogger` with - `MiraiLogger.create`, and - `MiraiLogger.setDefaultLoggerCreator` - `MiraiLogger.Companion` is no longer `MiraiLogger`, moved to `MiraiLogger.TopLevel` - Mark `PlatformLogger` as an internal API close #633
This commit is contained in:
parent
270109cb89
commit
8e05d97315
@ -76,7 +76,7 @@ internal class Handler<in E : Event> internal constructor(
|
||||
?: coroutineContext[CoroutineExceptionHandler]?.handleException(subscriberContext, e)
|
||||
?: kotlin.run {
|
||||
@Suppress("DEPRECATION")
|
||||
(if (event is BotEvent) event.bot.logger else MiraiLogger)
|
||||
(if (event is BotEvent) event.bot.logger else MiraiLogger.TopLevel)
|
||||
.warning(
|
||||
"""Event processing: An exception occurred but no CoroutineExceptionHandler found,
|
||||
either in coroutineContext from Handler job, or in subscriberContext""".trimIndent(), e
|
||||
|
@ -48,26 +48,26 @@ public open class BotConfiguration { // open for Java
|
||||
/**
|
||||
* 日志记录器
|
||||
*
|
||||
* - 默认打印到标准输出, 通过 [DefaultLogger]
|
||||
* - 默认打印到标准输出, 通过 [MiraiLogger.create]
|
||||
* - 忽略所有日志: [noBotLog]
|
||||
* - 重定向到一个目录: `networkLoggerSupplier = { DirectoryLogger("Net ${it.id}") }`
|
||||
* - 重定向到一个文件: `networkLoggerSupplier = { SingleFileLogger("Net ${it.id}") }`
|
||||
*
|
||||
* @see MiraiLogger
|
||||
*/
|
||||
public var botLoggerSupplier: ((Bot) -> MiraiLogger) = { DefaultLogger("Bot ${it.id}") }
|
||||
public var botLoggerSupplier: ((Bot) -> MiraiLogger) = { MiraiLogger.create("Bot ${it.id}") }
|
||||
|
||||
/**
|
||||
* 网络层日志构造器
|
||||
*
|
||||
* - 默认打印到标准输出, 通过 [DefaultLogger]
|
||||
* - 默认打印到标准输出, 通过 [MiraiLogger.create]
|
||||
* - 忽略所有日志: [noNetworkLog]
|
||||
* - 重定向到一个目录: `networkLoggerSupplier = { DirectoryLogger("Net ${it.id}") }`
|
||||
* - 重定向到一个文件: `networkLoggerSupplier = { SingleFileLogger("Net ${it.id}") }`
|
||||
*
|
||||
* @see MiraiLogger
|
||||
*/
|
||||
public var networkLoggerSupplier: ((Bot) -> MiraiLogger) = { DefaultLogger("Net ${it.id}") }
|
||||
public var networkLoggerSupplier: ((Bot) -> MiraiLogger) = { MiraiLogger.create("Net ${it.id}") }
|
||||
|
||||
/** 父 [CoroutineContext]. [Bot] 创建后会使用 [SupervisorJob] 覆盖其 [Job], 但会将这个 [Job] 作为父 [Job] */
|
||||
public var parentCoroutineContext: CoroutineContext = EmptyCoroutineContext
|
||||
@ -349,8 +349,8 @@ public open class BotConfiguration { // open for Java
|
||||
|
||||
internal val deviceInfoStub: (Bot) -> DeviceInfo = {
|
||||
@Suppress("DEPRECATION")
|
||||
MiraiLogger.warning("未指定设备信息, 已使用随机设备信息. 请查看 BotConfiguration.deviceInfo 以获取更多信息.")
|
||||
MiraiLogger.TopLevel.warning("未指定设备信息, 已使用随机设备信息. 请查看 BotConfiguration.deviceInfo 以获取更多信息.")
|
||||
@Suppress("DEPRECATION")
|
||||
MiraiLogger.warning("Device info isn't specified. Please refer to BotConfiguration.deviceInfo for more information")
|
||||
MiraiLogger.TopLevel.warning("Device info isn't specified. Please refer to BotConfiguration.deviceInfo for more information")
|
||||
DeviceInfo.random()
|
||||
}
|
@ -31,7 +31,15 @@ import kotlin.contracts.contract
|
||||
*
|
||||
* Java 调用: `Utils.getDefaultLogger().invoke(identity)`
|
||||
*/
|
||||
public var DefaultLogger: (identity: String?) -> MiraiLogger = { PlatformLogger(it) }
|
||||
@Deprecated(
|
||||
"Use MiraiLogger.create",
|
||||
level = DeprecationLevel.ERROR,
|
||||
replaceWith = ReplaceWith("MiraiLogger.create(identity)", "net.mamoe.mirai.utils.MiraiLogger")
|
||||
)
|
||||
@PlannedRemoval("2.0-M2")
|
||||
public var DefaultLogger: (identity: String?) -> MiraiLogger
|
||||
get() = { MiraiLogger.create(it) }
|
||||
set(value) = MiraiLogger.setDefaultLoggerCreator(value)
|
||||
|
||||
/**
|
||||
* 给这个 logger 添加一个开关, 用于控制是否记录 log
|
||||
@ -56,14 +64,28 @@ public fun MiraiLogger.withSwitch(default: Boolean = true): MiraiLoggerWithSwitc
|
||||
* @see MiraiLoggerPlatformBase 平台通用基础实现. 若 Mirai 自带的日志系统无法满足需求, 请继承这个类并实现其抽象函数.
|
||||
*/
|
||||
public interface MiraiLogger {
|
||||
/**
|
||||
* 顶层日志记录器.
|
||||
*
|
||||
* 顶层日志会导致混乱并难以定位问题. 请自行构造 logger 实例并使用.
|
||||
* 请参考使用 [DefaultLogger]
|
||||
*/
|
||||
@Deprecated(message = "顶层日志会导致混乱并难以定位问题. 请自行构造 logger 实例并使用.", level = DeprecationLevel.WARNING)
|
||||
public companion object : MiraiLogger by DefaultLogger("Mirai")
|
||||
|
||||
public companion object {
|
||||
/**
|
||||
* 顶层日志, 仅供 Mirai 内部使用.
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
@MiraiExperimentalApi
|
||||
public val TopLevel: MiraiLogger by lazy { create("Mirai") }
|
||||
|
||||
@Volatile
|
||||
private var defaultLogger: (identity: String?) -> MiraiLogger = { PlatformLogger(it) }
|
||||
|
||||
@JvmStatic
|
||||
public fun setDefaultLoggerCreator(creator: (identity: String?) -> MiraiLogger) {
|
||||
defaultLogger = creator
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public fun create(identity: String?): MiraiLogger {
|
||||
return defaultLogger.invoke(identity)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 日志的标记. 在 Mirai 中, identity 可为
|
||||
@ -154,14 +176,6 @@ public interface MiraiLogger {
|
||||
* @return [follower]
|
||||
*/
|
||||
public operator fun <T : MiraiLogger> plus(follower: T): T
|
||||
|
||||
/**
|
||||
* 添加一个 [follower]
|
||||
* 若 [MiraiLogger.follower] 已经有值, 则会对这个值调用 [plusAssign]. 即会在日志记录器链的末尾添加这个参数 [follower]
|
||||
*
|
||||
* @see follower
|
||||
*/
|
||||
public operator fun plusAssign(follower: MiraiLogger)
|
||||
}
|
||||
|
||||
|
||||
@ -236,8 +250,9 @@ public inline fun MiraiLogger.error(message: () -> String?, e: Throwable?) {
|
||||
*
|
||||
* 严重程度为 V, I, W, E. 分别对应 verbose, info, warning, error
|
||||
*
|
||||
* @see DefaultLogger
|
||||
* @see MiraiLogger.create
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
public expect open class PlatformLogger constructor(
|
||||
identity: String? = "Mirai",
|
||||
output: (String) -> Unit, // TODO: 2020/11/30 review logs, currently it's just for compile
|
||||
@ -443,8 +458,4 @@ public abstract class MiraiLoggerPlatformBase : MiraiLogger {
|
||||
this.follower = follower
|
||||
return follower
|
||||
}
|
||||
|
||||
public override fun plusAssign(follower: MiraiLogger): Unit =
|
||||
if (this.follower == null) this.follower = follower
|
||||
else this.follower!! += follower
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ internal object WindowHelperJvm {
|
||||
kotlin.runCatching {
|
||||
Desktop.isDesktopSupported().also { stat ->
|
||||
if (stat) {
|
||||
MiraiLogger.info(
|
||||
MiraiLogger.TopLevel.info(
|
||||
"""
|
||||
Mirai 正在使用桌面环境,
|
||||
如果你正在使用SSH, 或无法访问桌面等,
|
||||
@ -92,7 +92,7 @@ internal object WindowHelperJvm {
|
||||
然后重启 Mirai
|
||||
""".trimIndent()
|
||||
)
|
||||
MiraiLogger.info(
|
||||
MiraiLogger.TopLevel.info(
|
||||
"""
|
||||
Mirai using DesktopCaptcha System.
|
||||
If you are running on SSH, cannot access desktop or more.
|
||||
@ -104,7 +104,7 @@ internal object WindowHelperJvm {
|
||||
}
|
||||
}.getOrElse {
|
||||
// Should not happen
|
||||
MiraiLogger.warning("Exception in checking desktop support.", it)
|
||||
MiraiLogger.TopLevel.warning("Exception in checking desktop support.", it)
|
||||
false
|
||||
}
|
||||
} else {
|
||||
|
@ -38,10 +38,11 @@ import java.util.*
|
||||
*
|
||||
* @param isColored 是否添加 ANSI 颜色
|
||||
*
|
||||
* @see DefaultLogger
|
||||
* @see MiraiLogger.create
|
||||
* @see SingleFileLogger 使用单一文件记录日志
|
||||
* @see DirectoryLogger 在一个目录中按日期存放文件记录日志, 自动清理过期日志
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
public actual open class PlatformLogger constructor(
|
||||
public override val identity: String? = "Mirai",
|
||||
/**
|
||||
|
@ -33,8 +33,6 @@ import net.mamoe.mirai.internal.utils.io.readString
|
||||
import net.mamoe.mirai.internal.utils.io.useBytes
|
||||
import net.mamoe.mirai.internal.utils.io.withUse
|
||||
import net.mamoe.mirai.utils.*
|
||||
import kotlin.jvm.JvmName
|
||||
import kotlin.jvm.JvmOverloads
|
||||
|
||||
internal sealed class PacketFactory<TPacket : Packet?> {
|
||||
/**
|
||||
@ -122,7 +120,7 @@ internal typealias PacketConsumer<T> = suspend (packetFactory: PacketFactory<T>,
|
||||
*/
|
||||
@PublishedApi
|
||||
internal val PacketLogger: MiraiLoggerWithSwitch by lazy {
|
||||
DefaultLogger("Packet").withSwitch(false)
|
||||
MiraiLogger.create("Packet").withSwitch(false)
|
||||
}
|
||||
|
||||
internal object KnownPacketFactories {
|
||||
|
@ -12,7 +12,7 @@
|
||||
package net.mamoe.mirai.internal.utils
|
||||
|
||||
import kotlinx.serialization.Transient
|
||||
import net.mamoe.mirai.utils.DefaultLogger
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.debug
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.reflect.KClass
|
||||
@ -31,7 +31,7 @@ private fun <T> Sequence<T>.joinToStringPrefixed(prefix: String, transform: (T)
|
||||
return this.joinToString(prefix = "$prefix$indent", separator = "\n$prefix$indent", transform = transform)
|
||||
}
|
||||
|
||||
private val SoutvLogger by lazy { DefaultLogger("soutv") }
|
||||
private val SoutvLogger by lazy { MiraiLogger.create("soutv") }
|
||||
internal fun Any?.soutv(name: String = "unnamed") {
|
||||
@Suppress("DEPRECATION")
|
||||
SoutvLogger.debug { "$name = ${this._miraiContentToString()}" }
|
||||
|
@ -14,19 +14,18 @@ package test
|
||||
import kotlinx.io.core.ByteReadPacket
|
||||
import kotlinx.io.core.Input
|
||||
import kotlinx.io.core.readAvailable
|
||||
import kotlinx.io.core.use
|
||||
import kotlinx.io.pool.useInstance
|
||||
import net.mamoe.mirai.internal.utils.ByteArrayPool
|
||||
import net.mamoe.mirai.internal.utils.toReadPacket
|
||||
import net.mamoe.mirai.internal.utils.toUHexString
|
||||
import net.mamoe.mirai.utils.DefaultLogger
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.MiraiLoggerWithSwitch
|
||||
import net.mamoe.mirai.utils.withSwitch
|
||||
import kotlin.contracts.InvocationKind
|
||||
import kotlin.contracts.contract
|
||||
|
||||
|
||||
val DebugLogger: MiraiLoggerWithSwitch = DefaultLogger("Packet Debug").withSwitch(true)
|
||||
val DebugLogger: MiraiLoggerWithSwitch = MiraiLogger.create("Packet Debug").withSwitch(true)
|
||||
|
||||
internal inline fun ByteArray.debugPrintThis(name: String): ByteArray {
|
||||
DebugLogger.debug(name + "=" + this.toUHexString())
|
||||
|
Loading…
Reference in New Issue
Block a user