Files
29WxOrder/Source/MAX.Framework/Logger/NLogger.cs
T
2026-08-31 16:28:23 +08:00

154 lines
3.1 KiB
C#

using MAX.Core.DependencyInjection;
using MAX.Core.Infrastructure;
using MAX.Core.Logger;
using MAX.Framework.Interfaces;
using NLog;
using NLog.Targets;
using System;
using LLogLevel = MAX.Core.Logger.LogLevel;
using NLogLevel = NLog.LogLevel;
namespace MAX.Framework.Logger
{
public class NLogger : ILoggerFacade, ISingletonDependency
{
private readonly ILogger _log;
public static ILoggerFacade Instance => LazyServiceProvider.Instance.LazyGetService<ILoggerFacade>();
public NLogger(IFolderConfig folderConfig = null)
{
if (folderConfig != null)
{
Target target = new FileTarget("log1")
{
FileName = $"{folderConfig.LoggingFolder}\\{DateTime.Now:yyyy-MM-dd}.txt",
};
var config = new NLog.Config.LoggingConfiguration();
config.AddRule(NLogLevel.Debug, NLogLevel.Fatal, target);
LogManager.Configuration = config;
}
_log = LogManager.GetLogger("GlobalLogger");
}
public bool IsDebugEnabled { get; private set; } = false;
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);
}
/// <summary>
/// 是否启用
/// </summary>
private bool Enabled(NLogLevel level)
{
if (level > NLogLevel.Debug)
{
return true;
}
return IsDebugEnabled;
}
/// <summary>
/// 执行
/// </summary>
private void Execute(NLogLevel level, Exception ex, string message = "")
{
if (Enabled(level))
{
_log.Log(level, ex, message, null);
}
}
/// <summary>
/// 执行
/// </summary>
private void Execute(NLogLevel level, string message)
{
if (Enabled(level))
{
_log.Log(level, message);
}
}
}
}