using log4net.Config; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HighWayIot.Log4net { public class LogHelper { private static readonly Lazy lazy = new Lazy(() => new LogHelper()); public static LogHelper Instance { get { return lazy.Value; } } string currentDirectory = Environment.CurrentDirectory; private readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); private readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); private readonly log4net.ILog logView = log4net.LogManager.GetLogger("viewlog"); private readonly log4net.ILog sqllog = log4net.LogManager.GetLogger("sqllog"); private readonly log4net.ILog semaphorelog = log4net.LogManager.GetLogger("semaphorelog"); private readonly log4net.ILog logPlc = log4net.LogManager.GetLogger("plclog"); private readonly log4net.ILog logRfid = log4net.LogManager.GetLogger("rfidlog"); /** * 配置文件路径 * */ //private readonly string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"); private readonly string fileName = $"{Environment.CurrentDirectory}\\config\\log4net.config"; private LogHelper() { if (File.Exists(fileName)) { XmlConfigurator.Configure(new FileInfo(fileName)); } } /// /// 记录Info日志 控制台 log /// /// /// public void Info(string msg) { if (loginfo.IsInfoEnabled) { loginfo.Info(msg); } } /// /// 记录PLC日志 log /// /// public void PlcLog(string msg) { if (logPlc.IsInfoEnabled) { logPlc.Debug(msg); } } /// /// 记录Rfid日志 log /// /// public void RfidLog(string msg) { if (logRfid.IsInfoEnabled) { logRfid.Debug(msg); } } /// /// 界面日志 log /// /// public void ViewLog(string msg) { if (logView.IsInfoEnabled) { logView.Info(msg); } } /// /// 数据库日志 log /// /// public void SqlLog(string msg) { if (sqllog.IsInfoEnabled) { sqllog.Debug(msg); } } /// /// 信号量日志 log /// /// public void SemaphoreLog(string msg) { if (semaphorelog.IsInfoEnabled) { semaphorelog.Info(msg); } } /// /// 记录Error日志 控制台 log /// /// /// public void Error(string info, Exception ex = null) { if (!string.IsNullOrEmpty(info) && ex == null) { logerror.ErrorFormat("[错误信息] : {0}", new object[] { info }); } else if (!string.IsNullOrEmpty(info) && ex != null) { string errorMsg = BeautyErrorMsg(ex); logerror.ErrorFormat("[附加信息] : {0} message : {1}", new object[] { info, errorMsg }); } else if (string.IsNullOrEmpty(info) && ex != null) { string errorMsg = BeautyErrorMsg(ex); logerror.Error(errorMsg); } } /// /// 美化错误信息 /// /// 异常 /// 错误信息 private string BeautyErrorMsg(Exception ex) { string errorMsg = string.Format("【异常类型】:{0}
【异常信息】:{1}
【堆栈调用】:{2}", new object[] { ex.GetType().Name, ex.Message, ex.StackTrace }); errorMsg = errorMsg.Replace("\r\n", "
"); errorMsg = errorMsg.Replace("位置", "位置"); return errorMsg; } } }