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.
*/
internal fun MiraiLogger.subLogger(name: String): MarkedMiraiLogger {
internal fun MiraiLogger.subLogger(name: String): MiraiLogger {
return subLoggerImpl(this, name)
}
// 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) {
// origin can be Log4JAdapter or MiraiLoggerMarkedWrapper which delegates a non-Log4JAdapter.
origin.subLogger(name) // Log4JAdapter natively supports Markers.
} else {
// origin does not support Markers, so we add a wrapper for it.
MiraiLoggerMarkedWrapper(origin, Marker(name, origin.markerOrNull ?: MARKER_MIRAI))
return origin
// origin will never use the MiraiLoggerMarkedWrapper.marker so wrapping it is meaningless.
}
}