mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-17 09:09:23 +08:00
Implement MiraiLogger for native
This commit is contained in:
parent
1083cd3a9e
commit
b9957bb5d4
mirai-core-api/src
commonMain/kotlin/utils
jvmBaseMain/kotlin/utils
jvmBaseTest/kotlin/logging
nativeMain/kotlin/utils
mirai-core/src/nativeTest/kotlin/test
@ -15,7 +15,6 @@ package net.mamoe.mirai.utils
|
||||
import kotlin.jvm.JvmMultifileClass
|
||||
import kotlin.jvm.JvmName
|
||||
import kotlin.jvm.JvmOverloads
|
||||
import kotlin.jvm.JvmStatic
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
/**
|
||||
@ -31,12 +30,6 @@ public fun MiraiLogger.withSwitch(default: Boolean = true): MiraiLoggerWithSwitc
|
||||
*
|
||||
* Mirai 内建简单的日志系统, 即 [MiraiLogger]. [MiraiLogger] 的实现有 [SimpleLogger], [PlatformLogger], [SilentLogger].
|
||||
*
|
||||
* [MiraiLogger] 仅能处理简单的日志任务, 通常推荐使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 等日志库.
|
||||
*
|
||||
* ## 使用第三方日志库接管 Mirai 日志系统
|
||||
*
|
||||
* 使用 [LoggerAdapters], 将第三方日志 `Logger` 转为 [MiraiLogger]. 然后通过 [MiraiLogger.setDefaultLoggerCreator] 全局覆盖日志.
|
||||
*
|
||||
* ## 实现或使用 [MiraiLogger]
|
||||
*
|
||||
* 不建议实现或使用 [MiraiLogger]. 请优先考虑使用上述第三方框架. [MiraiLogger] 仅应用于兼容旧版本代码.
|
||||
@ -44,7 +37,6 @@ public fun MiraiLogger.withSwitch(default: Boolean = true): MiraiLoggerWithSwitc
|
||||
* @see SimpleLogger 简易 logger, 它将所有的日志记录操作都转移给 lambda `(String?, Throwable?) -> Unit`
|
||||
* @see PlatformLogger 各个平台下的默认日志记录实现.
|
||||
* @see SilentLogger 忽略任何日志记录操作的 logger 实例.
|
||||
* @see LoggerAdapters
|
||||
*
|
||||
* @see MiraiLoggerPlatformBase 平台通用基础实现. 若 Mirai 自带的日志系统无法满足需求, 请继承这个类并实现其抽象函数.
|
||||
*/
|
||||
@ -74,44 +66,7 @@ public expect interface MiraiLogger {
|
||||
public companion object INSTANCE : Factory
|
||||
}
|
||||
|
||||
public companion object {
|
||||
/**
|
||||
* 顶层日志, 仅供 Mirai 内部使用.
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
@MiraiExperimentalApi
|
||||
@Deprecated("Deprecated.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public val TopLevel: MiraiLogger
|
||||
|
||||
/**
|
||||
* 已弃用, 请实现 service [net.mamoe.mirai.utils.MiraiLogger.Factory] 并以 [ServiceLoader] 支持的方式提供.
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@Deprecated(
|
||||
"Please set factory by providing an service of type net.mamoe.mirai.utils.MiraiLogger.Factory",
|
||||
level = DeprecationLevel.ERROR
|
||||
) // deprecated since 2.7
|
||||
@JvmStatic
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10") // left ERROR intentionally, for internal uses.
|
||||
public fun setDefaultLoggerCreator(creator: (identity: String?) -> MiraiLogger)
|
||||
|
||||
|
||||
/**
|
||||
* 旧版本用于创建 [MiraiLogger]. 已弃用. 请使用 [MiraiLogger.Factory.INSTANCE.create].
|
||||
*
|
||||
* @see setDefaultLoggerCreator
|
||||
*/
|
||||
@Deprecated(
|
||||
"Please use MiraiLogger.Factory.create", ReplaceWith(
|
||||
"MiraiLogger.Factory.create(YourClass::class, identity)",
|
||||
"net.mamoe.mirai.utils.MiraiLogger"
|
||||
), level = DeprecationLevel.HIDDEN
|
||||
) // deprecated since 2.7
|
||||
@JvmStatic
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public fun create(identity: String?): MiraiLogger
|
||||
}
|
||||
public companion object;
|
||||
|
||||
/**
|
||||
* 日志的标记. 在 Mirai 中, identity 可为
|
||||
@ -134,7 +89,6 @@ public expect interface MiraiLogger {
|
||||
* 当 VERBOSE 级别的日志启用时返回 `true`.
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -145,7 +99,6 @@ public expect interface MiraiLogger {
|
||||
* 当 DEBUG 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -156,7 +109,6 @@ public expect interface MiraiLogger {
|
||||
* 当 INFO 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -167,7 +119,6 @@ public expect interface MiraiLogger {
|
||||
* 当 WARNING 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -178,35 +129,19 @@ public expect interface MiraiLogger {
|
||||
* 当 ERROR 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
*/
|
||||
public open val isErrorEnabled: Boolean
|
||||
|
||||
/**
|
||||
* 随从. 在 this 中调用所有方法后都应继续往 [follower] 传递调用.
|
||||
* [follower] 的存在可以让一次日志被多个日志记录器记录.
|
||||
*
|
||||
* 一般不建议直接修改这个属性. 请通过 [plus] 来连接两个日志记录器.
|
||||
* 如: `val logger = bot.logger + MyLogger()`
|
||||
* 当调用 `logger.info()` 时, `bot.logger` 会首先记录, `MyLogger` 会随后记录.
|
||||
*
|
||||
* 当然, 多个 logger 也可以加在一起: `val logger = bot.logger + MynLogger() + MyLogger2()`
|
||||
*/
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
@Deprecated("follower 设计不佳, 请避免使用", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public open var follower: MiraiLogger?
|
||||
|
||||
/**
|
||||
* 记录一个 `verbose` 级别的日志.
|
||||
* 无关紧要的, 经常大量输出的日志应使用它.
|
||||
*/
|
||||
public fun verbose(message: String?)
|
||||
|
||||
public open fun verbose(e: Throwable?): Unit
|
||||
public open fun verbose(e: Throwable?)
|
||||
public fun verbose(message: String?, e: Throwable?)
|
||||
|
||||
/**
|
||||
@ -214,7 +149,7 @@ public expect interface MiraiLogger {
|
||||
*/
|
||||
public fun debug(message: String?)
|
||||
|
||||
public open fun debug(e: Throwable?): Unit
|
||||
public open fun debug(e: Throwable?)
|
||||
public fun debug(message: String?, e: Throwable?)
|
||||
|
||||
|
||||
@ -223,7 +158,7 @@ public expect interface MiraiLogger {
|
||||
*/
|
||||
public fun info(message: String?)
|
||||
|
||||
public open fun info(e: Throwable?): Unit
|
||||
public open fun info(e: Throwable?)
|
||||
public fun info(message: String?, e: Throwable?)
|
||||
|
||||
|
||||
@ -232,7 +167,7 @@ public expect interface MiraiLogger {
|
||||
*/
|
||||
public fun warning(message: String?)
|
||||
|
||||
public open fun warning(e: Throwable?): Unit
|
||||
public open fun warning(e: Throwable?)
|
||||
public fun warning(message: String?, e: Throwable?)
|
||||
|
||||
|
||||
@ -241,28 +176,11 @@ public expect interface MiraiLogger {
|
||||
*/
|
||||
public fun error(message: String?)
|
||||
|
||||
public open fun error(e: Throwable?): Unit
|
||||
public open fun error(e: Throwable?)
|
||||
public fun error(message: String?, e: Throwable?)
|
||||
|
||||
/** 根据优先级调用对应函数 */
|
||||
public open fun call(priority: SimpleLogger.LogPriority, message: String? = null, e: Throwable? = null): Unit
|
||||
|
||||
/**
|
||||
* 添加一个 [follower], 返回 [follower]
|
||||
* 它只会把 `this` 的属性 [MiraiLogger.follower] 修改为这个函数的参数 [follower], 然后返回这个参数.
|
||||
* 若 [MiraiLogger.follower] 已经有值, 则会替换掉这个值.
|
||||
* ```
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* | base | <-- | follower | <-- | follower | <-- | follower |
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* ```
|
||||
*
|
||||
* @return [follower]
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@Deprecated("plus 设计不佳, 请避免使用.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public open operator fun <T : MiraiLogger> plus(follower: T): T
|
||||
public open fun call(priority: SimpleLogger.LogPriority, message: String? = null, e: Throwable? = null)
|
||||
}
|
||||
|
||||
|
||||
@ -327,7 +245,7 @@ public inline fun MiraiLogger.error(message: () -> String?, e: Throwable?) {
|
||||
*
|
||||
* 严重程度为 V, I, W, E. 分别对应 verbose, info, warning, error
|
||||
*
|
||||
* @see MiraiLogger.create
|
||||
* @see MiraiLogger.Factory.create
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
public expect open class PlatformLogger @JvmOverloads constructor(
|
||||
@ -455,7 +373,7 @@ public class MiraiLoggerWithSwitch internal constructor(private val delegate: Mi
|
||||
}
|
||||
|
||||
/**
|
||||
* 日志基类. 实现了 [follower] 的调用传递.
|
||||
* 日志基类.
|
||||
* 若 Mirai 自带的日志系统无法满足需求, 请继承这个类或 [PlatformLogger] 并实现其抽象函数.
|
||||
*
|
||||
* 这个类不应该被用作变量的类型定义. 只应被作为继承对象.
|
||||
@ -468,11 +386,6 @@ public class MiraiLoggerWithSwitch internal constructor(private val delegate: Mi
|
||||
public abstract class MiraiLoggerPlatformBase : MiraiLogger {
|
||||
public override val isEnabled: Boolean get() = true
|
||||
|
||||
@Suppress("OverridingDeprecatedMember")
|
||||
@Deprecated("follower 设计不佳, 请避免使用", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public final override var follower: MiraiLogger? = null
|
||||
|
||||
public final override fun verbose(message: String?) {
|
||||
if (!isEnabled) return
|
||||
verbose0(message)
|
||||
@ -533,11 +446,4 @@ public abstract class MiraiLoggerPlatformBase : MiraiLogger {
|
||||
protected abstract fun warning0(message: String?, e: Throwable?)
|
||||
protected open fun error0(message: String?): Unit = error0(message, null)
|
||||
protected abstract fun error0(message: String?, e: Throwable?)
|
||||
|
||||
@Suppress("OverridingDeprecatedMember")
|
||||
@Deprecated("plus 设计不佳, 请避免使用.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public override operator fun <T : MiraiLogger> plus(follower: T): T {
|
||||
return follower
|
||||
}
|
||||
}
|
@ -13,6 +13,7 @@
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import net.mamoe.mirai.utils.*
|
||||
import java.util.*
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
/**
|
||||
@ -89,7 +90,7 @@ public actual interface MiraiLogger {
|
||||
@MiraiExperimentalApi
|
||||
@Deprecated("Deprecated.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual val TopLevel: MiraiLogger by lazy { Factory.create(MiraiLogger::class, "Mirai") }
|
||||
public val TopLevel: MiraiLogger by lazy { Factory.create(MiraiLogger::class, "Mirai") }
|
||||
|
||||
/**
|
||||
* 已弃用, 请实现 service [net.mamoe.mirai.utils.MiraiLogger.Factory] 并以 [ServiceLoader] 支持的方式提供.
|
||||
@ -101,7 +102,7 @@ public actual interface MiraiLogger {
|
||||
) // deprecated since 2.7
|
||||
@JvmStatic
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10") // left ERROR intentionally, for internal uses.
|
||||
public actual fun setDefaultLoggerCreator(creator: (identity: String?) -> MiraiLogger) {
|
||||
public fun setDefaultLoggerCreator(creator: (identity: String?) -> MiraiLogger) {
|
||||
DefaultFactoryOverrides.override { _, identity -> creator(identity) }
|
||||
}
|
||||
|
||||
@ -118,7 +119,7 @@ public actual interface MiraiLogger {
|
||||
) // deprecated since 2.7
|
||||
@JvmStatic
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual fun create(identity: String?): MiraiLogger = Factory.create(MiraiLogger::class, identity)
|
||||
public fun create(identity: String?): MiraiLogger = Factory.create(MiraiLogger::class, identity)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,20 +194,10 @@ public actual interface MiraiLogger {
|
||||
*/
|
||||
public actual val isErrorEnabled: Boolean get() = isEnabled
|
||||
|
||||
/**
|
||||
* 随从. 在 this 中调用所有方法后都应继续往 [follower] 传递调用.
|
||||
* [follower] 的存在可以让一次日志被多个日志记录器记录.
|
||||
*
|
||||
* 一般不建议直接修改这个属性. 请通过 [plus] 来连接两个日志记录器.
|
||||
* 如: `val logger = bot.logger + MyLogger()`
|
||||
* 当调用 `logger.info()` 时, `bot.logger` 会首先记录, `MyLogger` 会随后记录.
|
||||
*
|
||||
* 当然, 多个 logger 也可以加在一起: `val logger = bot.logger + MynLogger() + MyLogger2()`
|
||||
*/
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
@Deprecated("follower 设计不佳, 请避免使用", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual var follower: MiraiLogger?
|
||||
public var follower: MiraiLogger?
|
||||
get() = null
|
||||
set(value) {}
|
||||
|
||||
@ -258,22 +249,10 @@ public actual interface MiraiLogger {
|
||||
public actual fun call(priority: SimpleLogger.LogPriority, message: String?, e: Throwable?): Unit =
|
||||
priority.correspondingFunction(this, message, e)
|
||||
|
||||
/**
|
||||
* 添加一个 [follower], 返回 [follower]
|
||||
* 它只会把 `this` 的属性 [MiraiLogger.follower] 修改为这个函数的参数 [follower], 然后返回这个参数.
|
||||
* 若 [MiraiLogger.follower] 已经有值, 则会替换掉这个值.
|
||||
* ```
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* | base | <-- | follower | <-- | follower | <-- | follower |
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* ```
|
||||
*
|
||||
* @return [follower]
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@Deprecated("plus 设计不佳, 请避免使用.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual operator fun <T : MiraiLogger> plus(follower: T): T = follower
|
||||
public operator fun <T : MiraiLogger> plus(follower: T): T = follower
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
@ -18,12 +18,6 @@ import kotlin.reflect.KClass
|
||||
*
|
||||
* Mirai 内建简单的日志系统, 即 [MiraiLogger]. [MiraiLogger] 的实现有 [SimpleLogger], [PlatformLogger], [SilentLogger].
|
||||
*
|
||||
* [MiraiLogger] 仅能处理简单的日志任务, 通常推荐使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 等日志库.
|
||||
*
|
||||
* ## 使用第三方日志库接管 Mirai 日志系统
|
||||
*
|
||||
* 使用 [LoggerAdapters], 将第三方日志 `Logger` 转为 [MiraiLogger]. 然后通过 [MiraiLogger.setDefaultLoggerCreator] 全局覆盖日志.
|
||||
*
|
||||
* ## 实现或使用 [MiraiLogger]
|
||||
*
|
||||
* 不建议实现或使用 [MiraiLogger]. 请优先考虑使用上述第三方框架. [MiraiLogger] 仅应用于兼容旧版本代码.
|
||||
@ -31,7 +25,6 @@ import kotlin.reflect.KClass
|
||||
* @see SimpleLogger 简易 logger, 它将所有的日志记录操作都转移给 lambda `(String?, Throwable?) -> Unit`
|
||||
* @see PlatformLogger 各个平台下的默认日志记录实现.
|
||||
* @see SilentLogger 忽略任何日志记录操作的 logger 实例.
|
||||
* @see LoggerAdapters
|
||||
*
|
||||
* @see MiraiLoggerPlatformBase 平台通用基础实现. 若 Mirai 自带的日志系统无法满足需求, 请继承这个类并实现其抽象函数.
|
||||
*/
|
||||
@ -48,56 +41,34 @@ public actual interface MiraiLogger {
|
||||
* @param requester 请求创建 [MiraiLogger] 的对象的 class
|
||||
* @param identity 对象标记 (备注)
|
||||
*/
|
||||
public actual fun create(requester: KClass<*>, identity: String?): MiraiLogger = TODO("native")
|
||||
public actual fun create(requester: KClass<*>, identity: String?): MiraiLogger {
|
||||
return create(requester)
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建 [MiraiLogger] 实例.
|
||||
*
|
||||
* @param requester 请求创建 [MiraiLogger] 的对象
|
||||
*/
|
||||
public actual fun create(requester: KClass<*>): MiraiLogger = TODO("native")
|
||||
|
||||
public actual companion object INSTANCE : Factory by TODO("native")
|
||||
}
|
||||
|
||||
public actual companion object {
|
||||
/**
|
||||
* 顶层日志, 仅供 Mirai 内部使用.
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
@MiraiExperimentalApi
|
||||
@Deprecated("Deprecated.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual val TopLevel: MiraiLogger by lazy { Factory.create(MiraiLogger::class, "Mirai") }
|
||||
|
||||
/**
|
||||
* 已弃用, 请实现 service [net.mamoe.mirai.utils.MiraiLogger.Factory] 并以 [ServiceLoader] 支持的方式提供.
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@Deprecated(
|
||||
"Please set factory by providing an service of type net.mamoe.mirai.utils.MiraiLogger.Factory",
|
||||
level = DeprecationLevel.ERROR
|
||||
) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10") // left ERROR intentionally, for internal uses.
|
||||
public actual fun setDefaultLoggerCreator(creator: (identity: String?) -> MiraiLogger) {
|
||||
throw UnsupportedOperationException()
|
||||
public actual fun create(requester: KClass<*>): MiraiLogger {
|
||||
throw UnsupportedOperationException() // Cannot be abstract since on JVM it is open
|
||||
}
|
||||
|
||||
/**
|
||||
* 旧版本用于创建 [MiraiLogger]. 已弃用. 请使用 [MiraiLogger.Factory.INSTANCE.create].
|
||||
*
|
||||
* @see setDefaultLoggerCreator
|
||||
*/
|
||||
@Deprecated(
|
||||
"Please use MiraiLogger.Factory.create", ReplaceWith(
|
||||
"MiraiLogger.Factory.create(YourClass::class, identity)",
|
||||
"net.mamoe.mirai.utils.MiraiLogger"
|
||||
), level = DeprecationLevel.HIDDEN
|
||||
) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual fun create(identity: String?): MiraiLogger = Factory.create(MiraiLogger::class, identity)
|
||||
public actual companion object INSTANCE : Factory by loadService(Factory::class, fallbackImplementation = {
|
||||
object : Factory {
|
||||
override fun create(requester: KClass<*>): MiraiLogger {
|
||||
return PlatformLogger(requester.qualifiedName ?: requester.simpleName)
|
||||
}
|
||||
|
||||
override fun create(requester: KClass<*>, identity: String?): MiraiLogger {
|
||||
return PlatformLogger(identity)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
public actual companion object;
|
||||
|
||||
/**
|
||||
* 日志的标记. 在 Mirai 中, identity 可为
|
||||
* - "Bot"
|
||||
@ -119,7 +90,6 @@ public actual interface MiraiLogger {
|
||||
* 当 VERBOSE 级别的日志启用时返回 `true`.
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -130,7 +100,6 @@ public actual interface MiraiLogger {
|
||||
* 当 DEBUG 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -141,7 +110,6 @@ public actual interface MiraiLogger {
|
||||
* 当 INFO 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -152,7 +120,6 @@ public actual interface MiraiLogger {
|
||||
* 当 WARNING 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
@ -163,30 +130,12 @@ public actual interface MiraiLogger {
|
||||
* 当 ERROR 级别的日志启用时返回 `true`
|
||||
*
|
||||
* 若 [isEnabled] 为 `false`, 返回 `false`.
|
||||
* 在使用 [SLF4J][org.slf4j.Logger], [LOG4J][org.apache.logging.log4j.Logger] 或 [JUL][java.util.logging.Logger] 时返回真实配置值.
|
||||
* 其他情况下返回 [isEnabled] 的值.
|
||||
*
|
||||
* @since 2.7
|
||||
*/
|
||||
public actual val isErrorEnabled: Boolean get() = isEnabled
|
||||
|
||||
/**
|
||||
* 随从. 在 this 中调用所有方法后都应继续往 [follower] 传递调用.
|
||||
* [follower] 的存在可以让一次日志被多个日志记录器记录.
|
||||
*
|
||||
* 一般不建议直接修改这个属性. 请通过 [plus] 来连接两个日志记录器.
|
||||
* 如: `val logger = bot.logger + MyLogger()`
|
||||
* 当调用 `logger.info()` 时, `bot.logger` 会首先记录, `MyLogger` 会随后记录.
|
||||
*
|
||||
* 当然, 多个 logger 也可以加在一起: `val logger = bot.logger + MynLogger() + MyLogger2()`
|
||||
*/
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
@Deprecated("follower 设计不佳, 请避免使用", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual var follower: MiraiLogger?
|
||||
get() = null
|
||||
set(value) {}
|
||||
|
||||
/**
|
||||
* 记录一个 `verbose` 级别的日志.
|
||||
* 无关紧要的, 经常大量输出的日志应使用它.
|
||||
@ -234,21 +183,4 @@ public actual interface MiraiLogger {
|
||||
/** 根据优先级调用对应函数 */
|
||||
public actual fun call(priority: SimpleLogger.LogPriority, message: String?, e: Throwable?): Unit =
|
||||
priority.correspondingFunction(this, message, e)
|
||||
|
||||
/**
|
||||
* 添加一个 [follower], 返回 [follower]
|
||||
* 它只会把 `this` 的属性 [MiraiLogger.follower] 修改为这个函数的参数 [follower], 然后返回这个参数.
|
||||
* 若 [MiraiLogger.follower] 已经有值, 则会替换掉这个值.
|
||||
* ```
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* | base | <-- | follower | <-- | follower | <-- | follower |
|
||||
* +------+ +----------+ +----------+ +----------+
|
||||
* ```
|
||||
*
|
||||
* @return [follower]
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@Deprecated("plus 设计不佳, 请避免使用.", level = DeprecationLevel.HIDDEN) // deprecated since 2.7
|
||||
@DeprecatedSinceMirai(warningSince = "2.7", errorSince = "2.10", hiddenSince = "2.11")
|
||||
public actual operator fun <T : MiraiLogger> plus(follower: T): T = follower
|
||||
}
|
||||
|
@ -9,6 +9,8 @@
|
||||
|
||||
package net.mamoe.mirai.utils
|
||||
|
||||
import net.mamoe.mirai.internal.utils.StdoutLogger
|
||||
|
||||
/**
|
||||
* 当前平台的默认的日志记录器.
|
||||
* - 在 _JVM 控制台_ 端的实现为 [println]
|
||||
@ -34,27 +36,35 @@ package net.mamoe.mirai.utils
|
||||
*/
|
||||
@MiraiInternalApi
|
||||
public actual open class PlatformLogger actual constructor(identity: String?) :
|
||||
MiraiLoggerPlatformBase() {
|
||||
override val identity: String?
|
||||
get() = TODO("Not yet implemented")
|
||||
MiraiLoggerPlatformBase(), MiraiLogger {
|
||||
|
||||
private val delegate = StdoutLogger(identity)
|
||||
|
||||
override val identity: String? get() = delegate.identity
|
||||
override val isEnabled: Boolean get() = delegate.isEnabled
|
||||
override val isVerboseEnabled: Boolean get() = delegate.isVerboseEnabled
|
||||
override val isDebugEnabled: Boolean get() = delegate.isDebugEnabled
|
||||
override val isInfoEnabled: Boolean get() = delegate.isInfoEnabled
|
||||
override val isWarningEnabled: Boolean get() = delegate.isWarningEnabled
|
||||
override val isErrorEnabled: Boolean get() = delegate.isErrorEnabled
|
||||
|
||||
override fun verbose0(message: String?, e: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
delegate.verbose0(message, e)
|
||||
}
|
||||
|
||||
override fun debug0(message: String?, e: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
delegate.debug(message, e)
|
||||
}
|
||||
|
||||
override fun info0(message: String?, e: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
delegate.info0(message, e)
|
||||
}
|
||||
|
||||
override fun warning0(message: String?, e: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
delegate.warning(message, e)
|
||||
}
|
||||
|
||||
override fun error0(message: String?, e: Throwable?) {
|
||||
TODO("Not yet implemented")
|
||||
delegate.error0(message, e)
|
||||
}
|
||||
}
|
@ -10,8 +10,6 @@
|
||||
package net.mamoe.mirai.internal.test
|
||||
|
||||
import net.mamoe.mirai.IMirai
|
||||
import net.mamoe.mirai.internal.network.framework.SynchronizedStdoutLogger
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.setSystemProp
|
||||
import kotlin.test.Test
|
||||
|
||||
@ -34,11 +32,6 @@ internal actual abstract class AbstractTest actual constructor() : CommonAbstrac
|
||||
init {
|
||||
initPlatform()
|
||||
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
MiraiLogger.setDefaultLoggerCreator {
|
||||
SynchronizedStdoutLogger(it)
|
||||
}
|
||||
|
||||
setSystemProp("mirai.network.packet.logger", "true")
|
||||
setSystemProp("mirai.network.state.observer.logging", "true")
|
||||
setSystemProp("mirai.network.show.all.components", "true")
|
||||
|
Loading…
Reference in New Issue
Block a user