From 7bacff5e241240602c7ed312c12a002b588e49ed Mon Sep 17 00:00:00 2001 From: Eicy Date: Sat, 21 Dec 2024 01:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=B4=A3=E4=BB=BB=E9=93=BE?= =?UTF-8?q?=E7=BC=96=E5=86=99Logger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Eicy --- Logger/AbstractLogger.cs | 33 +++++++++++++++++++++++++++++++++ Logger/DebugLogger.cs | 28 ++++++++++++++++++++++++++++ Logger/ErrorLogger.cs | 28 ++++++++++++++++++++++++++++ Logger/FatalLogger.cs | 28 ++++++++++++++++++++++++++++ Logger/InfoLogger.cs | 28 ++++++++++++++++++++++++++++ Logger/LogManager.cs | 28 ++++++++++++++++++++++++++++ Logger/VerboseLogger.cs | 28 ++++++++++++++++++++++++++++ Logger/WarnLogger.cs | 28 ++++++++++++++++++++++++++++ 8 files changed, 229 insertions(+) create mode 100644 Logger/AbstractLogger.cs create mode 100644 Logger/DebugLogger.cs create mode 100644 Logger/ErrorLogger.cs create mode 100644 Logger/FatalLogger.cs create mode 100644 Logger/InfoLogger.cs create mode 100644 Logger/LogManager.cs create mode 100644 Logger/VerboseLogger.cs create mode 100644 Logger/WarnLogger.cs diff --git a/Logger/AbstractLogger.cs b/Logger/AbstractLogger.cs new file mode 100644 index 0000000..0e2d2cd --- /dev/null +++ b/Logger/AbstractLogger.cs @@ -0,0 +1,33 @@ +using Debugger; +using Shrink.Config; + +namespace Shrink.Logger; + +public abstract class AbstractLogger +{ + private AbstractLogger? _nextLogger; + protected LogLevel LogLevel; + + public void SetNextLogger(AbstractLogger? nextLogger) + { + _nextLogger = nextLogger; + } + + public void LogMessage(string data, string eventName, LogLevel level, MsgType msgType, uint uin, string message) + { + //LogLevel = Info + //Config设置为Only Fatal + if (LogLevel == level) + { + //Info 3 + //Fatal 0 + if (LogLevel > Configuration.Instance.Config.LogLevel) return; + Log(data, eventName, msgType, uin, message); + LogManager.Instance.IsSent = true; + } + else + _nextLogger?.LogMessage(data, eventName, level, msgType, uin, message); + } + + protected abstract void Log(string data, string eventName, MsgType msgType, uint uin, string message); +} \ No newline at end of file diff --git a/Logger/DebugLogger.cs b/Logger/DebugLogger.cs new file mode 100644 index 0000000..31cf449 --- /dev/null +++ b/Logger/DebugLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class DebugLogger : AbstractLogger +{ + public DebugLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Debug] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Debug] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file diff --git a/Logger/ErrorLogger.cs b/Logger/ErrorLogger.cs new file mode 100644 index 0000000..817542c --- /dev/null +++ b/Logger/ErrorLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class ErrorLogger : AbstractLogger +{ + public ErrorLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Error] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Error] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file diff --git a/Logger/FatalLogger.cs b/Logger/FatalLogger.cs new file mode 100644 index 0000000..6d55719 --- /dev/null +++ b/Logger/FatalLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class FatalLogger : AbstractLogger +{ + public FatalLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Fatal] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Fatal] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file diff --git a/Logger/InfoLogger.cs b/Logger/InfoLogger.cs new file mode 100644 index 0000000..01e4e6f --- /dev/null +++ b/Logger/InfoLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class InfoLogger : AbstractLogger +{ + public InfoLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Info] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Info] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file diff --git a/Logger/LogManager.cs b/Logger/LogManager.cs new file mode 100644 index 0000000..a0d56ef --- /dev/null +++ b/Logger/LogManager.cs @@ -0,0 +1,28 @@ +using Debugger; + +namespace Shrink.Logger; + +public class LogManager +{ + private static readonly Lazy _instance = new(() => new LogManager()); + public static LogManager Instance => _instance.Value; + public AbstractLogger LogChain { get; } + + public bool IsSent; + + public LogManager() + { + AbstractLogger fatalLogger = new FatalLogger(LogLevel.Fatal); + AbstractLogger errorLogger = new ErrorLogger(LogLevel.Error); + AbstractLogger warnLogger = new WarnLogger(LogLevel.Warn); + AbstractLogger infoLogger = new InfoLogger(LogLevel.Info); + AbstractLogger verboseLogger = new VerboseLogger(LogLevel.Verbose); + AbstractLogger debugLogger = new DebugLogger(LogLevel.Debug); + fatalLogger.SetNextLogger(errorLogger); + errorLogger.SetNextLogger(warnLogger); + warnLogger.SetNextLogger(infoLogger); + infoLogger.SetNextLogger(verboseLogger); + verboseLogger.SetNextLogger(debugLogger); + LogChain = fatalLogger; + } +} \ No newline at end of file diff --git a/Logger/VerboseLogger.cs b/Logger/VerboseLogger.cs new file mode 100644 index 0000000..50a03b3 --- /dev/null +++ b/Logger/VerboseLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class VerboseLogger : AbstractLogger +{ + public VerboseLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Verbose] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Verbose] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file diff --git a/Logger/WarnLogger.cs b/Logger/WarnLogger.cs new file mode 100644 index 0000000..8406daf --- /dev/null +++ b/Logger/WarnLogger.cs @@ -0,0 +1,28 @@ +using Debugger; +using Lagrange.Core.Common.Interface.Api; +using Lagrange.Core.Message; +using Shrink.Service; + +namespace Shrink.Logger; + +public class WarnLogger : AbstractLogger +{ + public WarnLogger(LogLevel level) + { + LogLevel = level; + } + + protected override void Log(string data, string eventName, MsgType msgType, uint uin, string message) + { + if (msgType == MsgType.Public) + { + var chain = MessageBuilder.Group(uin).Text($"[{data}] [{eventName}] [Warn] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + else + { + var chain = MessageBuilder.Friend(uin).Text($"[{data}] [{eventName}] [Warn] {message}"); + BotService.Instance.Client!.SendMessage(chain.Build()); + } + } +} \ No newline at end of file