using Cowain.Bake.Common.Enums; using NLog; using NLog.Config; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using static System.Net.Mime.MediaTypeNames; namespace Cowain.Bake.Common.Core { public class LogHelper { private static LogHelper instance; public static LogHelper Instance { get { if (instance == null) { instance = new LogHelper(); } return instance; } } private Logger logger; //初始化日志类 /// /// 事件定义 /// public Action OnComplated; public Action OnShowInvoke { set; get; } /// /// 时间触发 /// /// 自定义消息 /// 是否触发事件通知 private void Notice(string msg, bool isShow, E_LogType logType) { if (OnShowInvoke != null) { OnShowInvoke?.Invoke(msg, isShow, logType); } } /// /// 静态构造函数 /// private LogHelper() { logger = NLog.LogManager.GetCurrentClassLogger(); //初始化日志类 //string rootPath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //string fileName = string.Format(@"{0}NLog.config", rootPath); ////初始化配置日志 //NLog.LogManager.Configuration = new XmlLoggingConfiguration(fileName); } public void Trace(string msg) { To(msg, E_LogType.Trace, false); } public void Debug(string msg, bool isShow = false) { To(msg, E_LogType.Debug, isShow); } public void Info(string msg, bool isShow = false) { To(msg, E_LogType.Info, isShow); } public void Warn(string msg, bool isShow = false) { To(msg, E_LogType.Warn, isShow); } public void Error(string msg, bool isShow = false) { To(msg, E_LogType.Error, isShow); } public void Fatal(string msg, bool isShow = false) { To(msg, E_LogType.Fatal, isShow); } #region 当前类也打印出来 public void GetCurrentClassDebug(string msg, bool isShow = false, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { msg = $"File:{sourceFilePath},Fun:{memberName},LineNum:{sourceLineNumber},{msg}"; To(msg, E_LogType.Debug, isShow); } public void GetCurrentClassInfo(string msg, bool isShow = false, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { msg = $"File:{sourceFilePath},Fun:{memberName},LineNum:{sourceLineNumber},{msg}"; To(msg, E_LogType.Info, isShow); } public void GetCurrentClassWarn(string msg, bool isShow = false, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { msg = $"File:{sourceFilePath},Fun:{memberName},LineNum:{sourceLineNumber},{msg}"; To(msg, E_LogType.Warn, isShow); } public void GetCurrentClassError(string msg, bool isShow = false, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { msg = $"File:{sourceFilePath},Fun:{memberName},LineNum:{sourceLineNumber},{msg}"; To(msg, E_LogType.Error, isShow); } public void GetCurrentClassFatal(string msg,bool isShow = false, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { msg = $"File:{sourceFilePath},Fun:{memberName},LineNum:{sourceLineNumber},{msg}"; To(msg, E_LogType.Fatal, isShow); } #endregion private void To(string msg, E_LogType logType, bool isShow = false) { switch (logType) { case E_LogType.Debug: logger.Debug(msg); break; case E_LogType.Info: logger.Info(msg); break; case E_LogType.Warn: logger.Warn(msg); break; case E_LogType.Error: logger.Error(msg); break; case E_LogType.Fatal: logger.Fatal(msg); break; default: logger.Trace(msg); break; } Notice(msg, isShow, logType); } } }