Commit 900040f9 authored by Him188's avatar Him188

Improved logger

parent 312fb437
...@@ -6,10 +6,7 @@ import net.mamoe.mirai.event.events.server.ServerDisabledEvent; ...@@ -6,10 +6,7 @@ import net.mamoe.mirai.event.events.server.ServerDisabledEvent;
import net.mamoe.mirai.event.events.server.ServerEnabledEvent; import net.mamoe.mirai.event.events.server.ServerEnabledEvent;
import net.mamoe.mirai.network.packet.login.LoginState; import net.mamoe.mirai.network.packet.login.LoginState;
import net.mamoe.mirai.task.MiraiTaskManager; import net.mamoe.mirai.task.MiraiTaskManager;
import net.mamoe.mirai.utils.BotAccount; import net.mamoe.mirai.utils.*;
import net.mamoe.mirai.utils.LoggerTextFormat;
import net.mamoe.mirai.utils.MiraiLogger;
import net.mamoe.mirai.utils.MiraiLoggerKt;
import net.mamoe.mirai.utils.config.MiraiConfig; import net.mamoe.mirai.utils.config.MiraiConfig;
import net.mamoe.mirai.utils.setting.MiraiSettingListSection; import net.mamoe.mirai.utils.setting.MiraiSettingListSection;
import net.mamoe.mirai.utils.setting.MiraiSettingMapSection; import net.mamoe.mirai.utils.setting.MiraiSettingMapSection;
...@@ -78,7 +75,7 @@ public final class MiraiServer { ...@@ -78,7 +75,7 @@ public final class MiraiServer {
this.parentFolder = new File(System.getProperty("user.dir")); this.parentFolder = new File(System.getProperty("user.dir"));
this.unix = !System.getProperties().getProperty("os.name").toUpperCase().contains("WINDOWS"); this.unix = !System.getProperties().getProperty("os.name").toUpperCase().contains("WINDOWS");
this.logger = MiraiLogger.INSTANCE; this.logger = MiraiLogger.Companion;
this.eventManager = MiraiEventManager.getInstance(); this.eventManager = MiraiEventManager.getInstance();
this.taskManager = MiraiTaskManager.getInstance(); this.taskManager = MiraiTaskManager.getInstance();
...@@ -201,7 +198,7 @@ public final class MiraiServer { ...@@ -201,7 +198,7 @@ public final class MiraiServer {
private Bot getAvailableBot() throws ExecutionException, InterruptedException { private Bot getAvailableBot() throws ExecutionException, InterruptedException {
for (String it : qqList.split("\n")) { for (String it : qqList.split("\n")) {
var strings = it.split("----"); var strings = it.split("----");
var bot = new Bot(new BotAccount(Long.parseLong(strings[0]), strings[1])); var bot = new Bot(new BotAccount(Long.parseLong(strings[0]), strings[1]), new Console());
if (bot.network.tryLogin(200).get() == LoginState.SUCCESS) { if (bot.network.tryLogin(200).get() == LoginState.SUCCESS) {
MiraiLoggerKt.success(bot, "Login succeed"); MiraiLoggerKt.success(bot, "Login succeed");
......
...@@ -6,6 +6,7 @@ import net.mamoe.mirai.network.BotNetworkHandler; ...@@ -6,6 +6,7 @@ import net.mamoe.mirai.network.BotNetworkHandler;
import net.mamoe.mirai.network.BotNetworkHandlerImpl; import net.mamoe.mirai.network.BotNetworkHandlerImpl;
import net.mamoe.mirai.utils.BotAccount; import net.mamoe.mirai.utils.BotAccount;
import net.mamoe.mirai.utils.ContactList; import net.mamoe.mirai.utils.ContactList;
import net.mamoe.mirai.utils.MiraiLogger;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.io.Closeable; import java.io.Closeable;
...@@ -57,6 +58,8 @@ public final class Bot implements Closeable { ...@@ -57,6 +58,8 @@ public final class Bot implements Closeable {
public final BotNetworkHandler network; public final BotNetworkHandler network;
public final MiraiLogger logger;
@Override @Override
public String toString() { public String toString() {
return String.format("Bot{id=%d,qq=%d}", id, this.account.getQqNumber()); return String.format("Bot{id=%d,qq=%d}", id, this.account.getQqNumber());
...@@ -94,9 +97,14 @@ public final class Bot implements Closeable { ...@@ -94,9 +97,14 @@ public final class Bot implements Closeable {
} }
} }
public Bot(@NotNull BotAccount account) { public Bot(@NotNull BotAccount account, @NotNull MiraiLogger logger) {
Objects.requireNonNull(account); Objects.requireNonNull(account);
this.account = account; this.account = account;
this.logger = Objects.requireNonNull(logger);
this.logger.setIdentity("Bot" + this.id + "(" + this.account.getQqNumber() + ")");
this.network = new BotNetworkHandlerImpl(this); this.network = new BotNetworkHandlerImpl(this);
} }
......
package net.mamoe.mirai
import java.io.File
/**
* @author Him188moe
*/
object Mirai {
val VERSION: String get() = internal.version
val WORKING_DIRECTORY: File get() = internal.workingDirectory
internal lateinit var internal: MiraiInternal
internal abstract class MiraiInternal {
abstract val workingDirectory: File
abstract val version: String
}
}
...@@ -223,7 +223,7 @@ internal class BotNetworkHandlerImpl(private val bot: Bot) : BotNetworkHandler { ...@@ -223,7 +223,7 @@ internal class BotNetworkHandlerImpl(private val bot: Bot) : BotNetworkHandler {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
socket!!.send(DatagramPacket(data, data.size)) socket!!.send(DatagramPacket(data, data.size))
} }
bot.cyanL("Packet sent: $packet") bot.cyan("Packet sent: $packet")
PacketSentEvent(bot, packet).broadcast() PacketSentEvent(bot, packet).broadcast()
} catch (e: Throwable) { } catch (e: Throwable) {
......
...@@ -6,38 +6,56 @@ import net.mamoe.mirai.network.packet.goto ...@@ -6,38 +6,56 @@ import net.mamoe.mirai.network.packet.goto
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
/** /**
* used to replace old logger
*
* @author Him188moe * @author Him188moe
* @author NaturalHG
*/ */
object MiraiLogger { interface MiraiLogger {
fun log(o: Any?) = info(o) companion object : Console("[TOP Level]")
fun println(o: Any?) = info(o)
fun info(o: Any?) = this.print(o.toString(), LoggerTextFormat.RESET) var identity: String
fun info(any: Any?) = log(any)
fun log(any: Any?)
fun error(any: Any?)
fun debug(any: Any?)
fun error(o: Any?) = this.print(o.toString(), LoggerTextFormat.RED) fun cyan(any: Any?)
fun notice(o: Any?) = this.print(o.toString(), LoggerTextFormat.LIGHT_BLUE) fun purple(any: Any?)
fun success(o: Any?) = this.print(o.toString(), LoggerTextFormat.GREEN) fun green(any: Any?)
fun debug(o: Any?) = this.print(o.toString(), LoggerTextFormat.YELLOW) fun blue(any: Any?)
}
val DEBUGGING: Boolean by lazy {
//avoid inspections
true
}
fun catching(e: Throwable) { open class Console(
e.printStackTrace() override var identity: String = "[Unknown]"
/* ) : MiraiLogger {
this.print(e.message) override fun green(any: Any?) = print(any.toString(), LoggerTextFormat.GREEN)
this.print(e.localizedMessage) override fun purple(any: Any?) = print(any.toString(), LoggerTextFormat.LIGHT_PURPLE)
this.print(e.cause.toString())*/ override fun blue(any: Any?) = print(any.toString(), LoggerTextFormat.BLUE)
override fun cyan(any: Any?) = print(any.toString(), LoggerTextFormat.LIGHT_CYAN)
override fun error(any: Any?) = print(any.toString(), LoggerTextFormat.RED)
override fun log(any: Any?) = print(any.toString(), LoggerTextFormat.LIGHT_GRAY)
override fun debug(any: Any?) {
if (DEBUGGING) {
print(any.toString(), LoggerTextFormat.YELLOW)
}
} }
@Synchronized @Synchronized
private fun print(value: String?, color: LoggerTextFormat = LoggerTextFormat.WHITE) { fun print(value: String?, color: LoggerTextFormat = LoggerTextFormat.YELLOW) {
val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date()) val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date())
kotlin.io.println("$color[Mirai] $s : $value")
println("$color$identity $s : $value")
} }
} }
...@@ -51,7 +69,7 @@ fun Bot.notice(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_BLUE) ...@@ -51,7 +69,7 @@ fun Bot.notice(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_BLUE)
fun Bot.purple(o: Any?) = print(this, o.toString(), LoggerTextFormat.PURPLE) fun Bot.purple(o: Any?) = print(this, o.toString(), LoggerTextFormat.PURPLE)
fun Bot.cyanL(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_CYAN) fun Bot.cyan(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_CYAN)
fun Bot.success(o: Any?) = print(this, o.toString(), LoggerTextFormat.GREEN) fun Bot.success(o: Any?) = print(this, o.toString(), LoggerTextFormat.GREEN)
fun Bot.debug(o: Any?) = print(this, o.toString(), LoggerTextFormat.YELLOW) fun Bot.debug(o: Any?) = print(this, o.toString(), LoggerTextFormat.YELLOW)
...@@ -69,17 +87,8 @@ private fun print(bot: Bot, value: String?, color: LoggerTextFormat = LoggerText ...@@ -69,17 +87,8 @@ private fun print(bot: Bot, value: String?, color: LoggerTextFormat = LoggerText
kotlin.io.println("$color[Mirai] $s #R${bot.id}: $value") kotlin.io.println("$color[Mirai] $s #R${bot.id}: $value")
} }
@Synchronized @Synchronized
private fun print(value: String?, color: LoggerTextFormat = LoggerTextFormat.WHITE) { private fun print(value: String?, color: LoggerTextFormat = LoggerTextFormat.WHITE) {
val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date()) val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date())
kotlin.io.println("$color[Mirai] $s : $value") kotlin.io.println("$color[Mirai] $s : $value")
} }
\ No newline at end of file
fun Any.logInfo() = MiraiLogger.info(this)
fun Any.logDebug() = MiraiLogger.debug(this)
fun Any.logError() = MiraiLogger.error(this)
fun Any.logNotice() = MiraiLogger.notice(this)
\ No newline at end of file
...@@ -3,6 +3,7 @@ import kotlinx.coroutines.launch ...@@ -3,6 +3,7 @@ import kotlinx.coroutines.launch
import net.mamoe.mirai.Bot import net.mamoe.mirai.Bot
import net.mamoe.mirai.network.packet.login.LoginState import net.mamoe.mirai.network.packet.login.LoginState
import net.mamoe.mirai.utils.BotAccount import net.mamoe.mirai.utils.BotAccount
import net.mamoe.mirai.utils.Console
import java.util.* import java.util.*
/** /**
...@@ -74,7 +75,7 @@ fun main() { ...@@ -74,7 +75,7 @@ fun main() {
return@let password.substring(0, password.length - 1) return@let password.substring(0, password.length - 1)
} }
return@let password return@let password
})) }), Console())
bot.network.tryLogin().whenComplete { state, _ -> bot.network.tryLogin().whenComplete { state, _ ->
if (!(state == LoginState.BLOCKED || state == LoginState.DEVICE_LOCK || state == LoginState.WRONG_PASSWORD)) { if (!(state == LoginState.BLOCKED || state == LoginState.DEVICE_LOCK || state == LoginState.WRONG_PASSWORD)) {
......
...@@ -9,6 +9,7 @@ import net.mamoe.mirai.message.defaults.Image ...@@ -9,6 +9,7 @@ import net.mamoe.mirai.message.defaults.Image
import net.mamoe.mirai.message.defaults.PlainText import net.mamoe.mirai.message.defaults.PlainText
import net.mamoe.mirai.network.packet.login.LoginState import net.mamoe.mirai.network.packet.login.LoginState
import net.mamoe.mirai.utils.BotAccount import net.mamoe.mirai.utils.BotAccount
import net.mamoe.mirai.utils.Console
/** /**
* @author Him188moe * @author Him188moe
...@@ -17,7 +18,7 @@ fun main() { ...@@ -17,7 +18,7 @@ fun main() {
val bot = Bot(BotAccount( val bot = Bot(BotAccount(
qqNumber = 1683921395, qqNumber = 1683921395,
password = "bb22222" password = "bb22222"
)) ), Console())
bot.network.tryLogin().get().let { bot.network.tryLogin().get().let {
check(it == LoginState.SUCCESS) { "Login failed: " + it.name } check(it == LoginState.SUCCESS) { "Login failed: " + it.name }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment