using MAX.Core.Infrastructure; using MAX.Core.Logger; using NLog; using System; using LLogLevel = MAX.Core.Logger.LogLevel; using NLogLevel = NLog.LogLevel; namespace StoreHub.Framework.Logger; public class NLogger : SingleInstance, ILoggerFacade { private readonly ILogger _log; private NLogger() { _log = LogManager.GetLogger("GlobalLogger"); } public bool IsDebugEnabled { get; private set; } = true; public void Debug(Exception ex, string message) { Execute(NLogLevel.Debug, ex, message); } public void Debug(string message) { Execute(NLogLevel.Debug, message); } public void Error(Exception ex) { Execute(NLogLevel.Error, ex); } public void Error(Exception ex, string message) { Execute(NLogLevel.Error, ex, message); } public void Error(string message) { Execute(NLogLevel.Error, message); } public void Fatal(Exception ex, string message) { Execute(NLogLevel.Fatal, ex, message); } public void Fatal(string message) { Execute(NLogLevel.Fatal, message); } public void Info(Exception ex, string message) { Execute(NLogLevel.Info, ex, message); } public void Info(string message) { Execute(NLogLevel.Info, message); } public void Warn(Exception ex, string message) { Execute(NLogLevel.Warn, ex, message); } public void Warn(string message) { Execute(NLogLevel.Warn, message); } public void Log(string message, LLogLevel level) { NLogLevel lv = NLogLevel.Info; switch (level) { case LLogLevel.Trace: lv = NLogLevel.Trace; break; case LLogLevel.Debug: lv = NLogLevel.Debug; break; case LLogLevel.Info: lv = NLogLevel.Info; break; case LLogLevel.Warn: lv = NLogLevel.Warn; break; case LLogLevel.Error: lv = NLogLevel.Error; break; case LLogLevel.Fatal: lv = NLogLevel.Fatal; break; case LLogLevel.None: lv = NLogLevel.Off; break; } Execute(lv, message); } /// /// 是否启用 /// private bool Enabled(NLogLevel level) { if (level > NLogLevel.Debug) { return true; } return IsDebugEnabled; } /// /// 执行 /// private void Execute(NLogLevel level, Exception ex, string message = "") { if (Enabled(level)) { _log.Log(level, ex, message, null); } } /// /// 执行 /// private void Execute(NLogLevel level, string message) { if (Enabled(level)) { _log.Log(level, message); } } }