diff --git a/mirai-console/backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt b/mirai-console/backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt index fb36555ca..18e688aec 100644 --- a/mirai-console/backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt +++ b/mirai-console/backend/mirai-console/src/internal/data/MultiFilePluginDataStorageImpl.kt @@ -15,6 +15,7 @@ import net.mamoe.mirai.console.data.MultiFilePluginDataStorage import net.mamoe.mirai.console.data.PluginData import net.mamoe.mirai.console.data.PluginDataHolder import net.mamoe.mirai.console.data.PluginDataStorage +import net.mamoe.mirai.console.internal.logging.lazyInitMiraiLogger import net.mamoe.mirai.console.util.ConsoleExperimentalApi import net.mamoe.mirai.message.MessageSerializers import net.mamoe.mirai.utils.MiraiLogger @@ -26,7 +27,7 @@ import java.nio.file.Path @Suppress("RedundantVisibilityModifier") // might be public in the future internal open class MultiFilePluginDataStorageImpl( public final override val directoryPath: Path, - private val logger: MiraiLogger = MiraiLogger.Factory.create(MultiFilePluginDataStorageImpl::class), + private val logger: MiraiLogger = lazyInitMiraiLogger { MiraiLogger.Factory.create(MultiFilePluginDataStorageImpl::class) }, ) : PluginDataStorage, MultiFilePluginDataStorage { init { directoryPath.mkdir() diff --git a/mirai-console/backend/mirai-console/src/internal/logging/LazyInitMiraiLogger.kt b/mirai-console/backend/mirai-console/src/internal/logging/LazyInitMiraiLogger.kt new file mode 100644 index 000000000..cb0e9add5 --- /dev/null +++ b/mirai-console/backend/mirai-console/src/internal/logging/LazyInitMiraiLogger.kt @@ -0,0 +1,28 @@ +/* + * 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. + * + * https://github.com/mamoe/mirai/blob/dev/LICENSE + */ + +package net.mamoe.mirai.console.internal.logging + +import me.him188.kotlin.dynamic.delegation.dynamicDelegation +import net.mamoe.mirai.utils.MiraiLogger + + +internal fun lazyInitMiraiLogger(block: () -> MiraiLogger): MiraiLogger { + return LazyInitMiraiLogger(lazy(block)) +} + +internal fun lazyInitMiraiLogger(block: Lazy): MiraiLogger { + return LazyInitMiraiLogger(block) +} + +internal class LazyInitMiraiLogger( + private val theLazy: Lazy, +) : MiraiLogger by (dynamicDelegation(LazyInitMiraiLogger::logger)) { + private inline val logger: MiraiLogger get() = theLazy.value +}