using log4net.Config; using System; using System.IO; namespace HighWayIot.Log4net { public class LogHelper { private static readonly Lazy lazy = new Lazy(() => new LogHelper()); public static LogHelper Instance { get { return lazy.Value; } } 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 = "C:\\项目代码\\澳柯玛MES项目\\Aucma.Scada\\HighWayIot.Log4net\\config\\log4net.config"; private LogHelper() { if (File.Exists(fileName)) { XmlConfigurator.Configure(new FileInfo(fileName)); } } /// /// 记录Info日志 /// /// /// public void Info(string msg) { if (loginfo.IsInfoEnabled) { loginfo.Info(msg); } } /// /// 记录PLC日志 /// /// public void PlcLog(string msg) { if (logPlc.IsInfoEnabled) { logPlc.Info(msg); } } /// /// 记录Rfid日志 /// /// public void RfidLog(string msg) { if (logRfid.IsInfoEnabled) { logRfid.Info(msg); } } /// /// 界面日志 /// /// public void ViewLog(string msg) { if (logView.IsInfoEnabled) { logView.Info(msg); } } public void SqlLog(string msg) { if (sqllog.IsInfoEnabled) { sqllog.Info(msg); } } public void SemaphoreLog(string msg) { if (semaphorelog.IsInfoEnabled) { semaphorelog.Info(msg); } } /// /// 记录Error日志 /// /// /// 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}
{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; } } }