diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt
index 61c0c9b73..62df4dc71 100644
--- a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt
+++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt
@@ -127,9 +127,17 @@ object MiraiConsole {
                                     override suspend fun read(question: String): String? {
                                         return frontEnd.requestInput(question)
                                     }
-                                })
+                                },
+                                    SimpleLogger("Login Helper") { _, message, e ->
+                                        logger("[Login Helper]", qqNumber, message)
+                                        if (e != null) {
+                                            logger("[NETWORK ERROR]", qqNumber, e.toString())//因为在一页 所以可以不打QQ
+                                            e.printStackTrace()
+                                        }
+                                    }
+                                )
                                 this.botLoggerSupplier = {
-                                    SimpleLogger("BOT $qqNumber") { _, message, e ->
+                                    SimpleLogger("BOT $qqNumber]") { _, message, e ->
                                         logger("[BOT $qqNumber]", qqNumber, message)
                                         if (e != null) {
                                             logger("[NETWORK ERROR]", qqNumber, e.toString())//因为在一页 所以可以不打QQ
diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt
index 84dbec29e..736e1f6a6 100644
--- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt
+++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt
@@ -53,54 +53,65 @@ class DefaultLoginSolverInputReader: LoginSolverInputReader{
 }
 
 class DefaultLoginSolver(
-    val reader: LoginSolverInputReader = DefaultLoginSolverInputReader()
+    val reader: LoginSolverInputReader = DefaultLoginSolverInputReader(),
+    val overrideLogger:MiraiLogger? = null
 ) : LoginSolver() {
+    fun getLogger(bot: Bot):MiraiLogger{
+        if(overrideLogger!=null){
+            return overrideLogger
+        }
+        return bot.logger
+    }
+
     override suspend fun onSolvePicCaptcha(bot: Bot, data: IoBuffer): String? = loginSolverLock.withLock {
+        val logger = getLogger(bot)
         val tempFile: File = createTempFile(suffix = ".png").apply { deleteOnExit() }
         withContext(Dispatchers.IO) {
             tempFile.createNewFile()
-            bot.logger.info("需要图片验证码登录, 验证码为 4 字母")
+            logger.info("需要图片验证码登录, 验证码为 4 字母")
             try {
                 tempFile.writeChannel().apply { writeFully(data); close() }
-                bot.logger.info("将会显示字符图片. 若看不清字符图片, 请查看文件 ${tempFile.absolutePath}")
+                logger.info("将会显示字符图片. 若看不清字符图片, 请查看文件 ${tempFile.absolutePath}")
             } catch (e: Exception) {
-                bot.logger.info("无法写出验证码文件(${e.message}), 请尝试查看以上字符图片")
+                logger.info("无法写出验证码文件(${e.message}), 请尝试查看以上字符图片")
             }
 
             tempFile.inputStream().use {
                 val img = ImageIO.read(it)
                 if (img == null) {
-                    bot.logger.info("无法创建字符图片. 请查看文件")
+                    logger.info("无法创建字符图片. 请查看文件")
                 } else {
-                    bot.logger.info(img.createCharImg())
+                    logger.info(img.createCharImg())
                 }
             }
         }
-        bot.logger.info("请输入 4 位字母验证码. 若要更换验证码, 请直接回车")
+        logger.info("请输入 4 位字母验证码. 若要更换验证码, 请直接回车")
                 return reader("请输入 4 位字母验证码. 若要更换验证码, 请直接回车")!!.takeUnless { it.isEmpty() || it.length != 4 }.also {
-            bot.logger.info("正在提交[$it]中...")
+            logger.info("正在提交[$it]中...")
         }
     }
 
     override suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? = loginSolverLock.withLock {
-        bot.logger.info("需要滑动验证码")
-        bot.logger.info("请在任意浏览器中打开以下链接并完成验证码. ")
-        bot.logger.info("完成后请输入任意字符 ")
-        bot.logger.info(url)
+        val logger = getLogger(bot)
+        logger.info("需要滑动验证码")
+        logger.info("请在任意浏览器中打开以下链接并完成验证码. ")
+        logger.info("完成后请输入任意字符 ")
+        logger.info(url)
         return reader("完成后请输入任意字符").also {
-            bot.logger.info("正在提交中...")
+            logger.info("正在提交中...")
         }
     }
 
     override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? = loginSolverLock.withLock {
-        bot.logger.info("需要进行账户安全认证")
-        bot.logger.info("该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题")
-        bot.logger.info("完成以下账号认证即可成功登陆|理论本认证在mirai每个账户中最多出现1次")
-        bot.logger.info("请将该链接在QQ浏览器中打开并完成认证, 成功后输入任意字符")
-        bot.logger.info("这步操作将在后续的版本中优化")
-        bot.logger.info(url)
+        val logger = getLogger(bot)
+        logger.info("需要进行账户安全认证")
+        logger.info("该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题")
+        logger.info("完成以下账号认证即可成功登陆|理论本认证在mirai每个账户中最多出现1次")
+        logger.info("请将该链接在QQ浏览器中打开并完成认证, 成功后输入任意字符")
+        logger.info("这步操作将在后续的版本中优化")
+        logger.info(url)
         return reader("完成后请输入任意字符").also {
-            bot.logger.info("正在提交中...")
+            logger.info("正在提交中...")
         }
     }