// //============================================================================= /// <summary> /// Log all levels if configured, else log errors and above /// </summary> /// <param name="core"></param> /// <param name="message"></param> /// <param name="level"></param> public static void log(CoreController core, string message, BaseClasses.CPLogBaseClass.LogLevel level) { try { string messageLine = getMessageLine(core, message); Logger loggerInstance = core.nlogLogger; loggerInstance.Log(typeof(LogController), new LogEventInfo(getNLogLogLevel(level), loggerInstance.Name, messageLine)); // // -- add to doc exception list to display at top of webpage if (level < BaseClasses.CPLogBaseClass.LogLevel.Warn) { return; } if (core.doc.errorList == null) { core.doc.errorList = new List <string>(); } if (core.doc.errorList.Count < 10) { core.doc.errorList.Add(messageLine); return; } if (core.doc.errorList.Count == 10) { core.doc.errorList.Add("Exception limit exceeded"); } } catch (Exception) { // -- throw away errors in error-handling } }
// //============================================================================= /// <summary> /// Convert internal logLevels to NLog, decoupling log levels so we don't expose NLog classes /// </summary> /// <param name="level"></param> /// <returns></returns> public static NLog.LogLevel getNLogLogLevel(BaseClasses.CPLogBaseClass.LogLevel level) { // // -- decouple NLog types from internal enum switch (level) { case BaseClasses.CPLogBaseClass.LogLevel.Trace: return(NLog.LogLevel.Trace); case BaseClasses.CPLogBaseClass.LogLevel.Debug: return(NLog.LogLevel.Debug); case BaseClasses.CPLogBaseClass.LogLevel.Warn: return(NLog.LogLevel.Warn); case BaseClasses.CPLogBaseClass.LogLevel.Error: return(NLog.LogLevel.Error); case BaseClasses.CPLogBaseClass.LogLevel.Fatal: return(NLog.LogLevel.Fatal); default: return(NLog.LogLevel.Info); } }
// //============================================================================= /// <summary> /// log any level with NLOG without messageLine formatting. Only use in extreme cases where the application environment is not stable. /// </summary> /// <param name="core"></param> /// <param name="messageLine"></param> /// <param name="level"></param> public static void logLocalOnly(string messageLine, BaseClasses.CPLogBaseClass.LogLevel level) { try { var nlogLogger = LogManager.GetCurrentClassLogger(); nlogLogger.Log(typeof(LogController), new LogEventInfo(getNLogLogLevel(level), nlogLogger.Name, messageLine)); } catch (Exception) { // -- throw away errors in error-handling } }