Do not wrap original MiraiLogger as MarkedMiraiLogger if it is not the type

This commit is contained in:
Him188 2021-08-10 04:35:19 +08:00
parent 20a14fc716
commit 9189affdf9

View File

@ -44,18 +44,18 @@ internal val MiraiLogger.markerOrNull get() = (this as? MarkedMiraiLogger)?.mark
* *
* Calling [MarkedMiraiLogger.subLogger] if possible, and creating [MiraiLoggerMarkedWrapper] otherwise. * Calling [MarkedMiraiLogger.subLogger] if possible, and creating [MiraiLoggerMarkedWrapper] otherwise.
*/ */
internal fun MiraiLogger.subLogger(name: String): MarkedMiraiLogger { internal fun MiraiLogger.subLogger(name: String): MiraiLogger {
return subLoggerImpl(this, name) return subLoggerImpl(this, name)
} }
// used by mirai-core // used by mirai-core
internal fun subLoggerImpl(origin: MiraiLogger, name: String): MarkedMiraiLogger { internal fun subLoggerImpl(origin: MiraiLogger, name: String): MiraiLogger {
return if (origin is MarkedMiraiLogger) { return if (origin is MarkedMiraiLogger) {
// origin can be Log4JAdapter or MiraiLoggerMarkedWrapper which delegates a non-Log4JAdapter. // origin can be Log4JAdapter or MiraiLoggerMarkedWrapper which delegates a non-Log4JAdapter.
origin.subLogger(name) // Log4JAdapter natively supports Markers. origin.subLogger(name) // Log4JAdapter natively supports Markers.
} else { } else {
// origin does not support Markers, so we add a wrapper for it. return origin
MiraiLoggerMarkedWrapper(origin, Marker(name, origin.markerOrNull ?: MARKER_MIRAI)) // origin will never use the MiraiLoggerMarkedWrapper.marker so wrapping it is meaningless.
} }
} }