using System; using System.Diagnostics; using System.Threading.Tasks; using log4net; namespace CPE.Utilities { /// /// Wrapper for Log4Net - uses SerialKey and Calling Class and Method. /// NOTE: Uses Asynchronous logging /// public static class LogWrapper { //Methods in Descending order of importance public static void Debug(string message, params object[] parameters) { string format; var logger = FormatMessage(message, parameters, out format); Task.Run(() => logger.DebugFormat(format)); } public static void Info(string message, params object[] parameters) { string format; var logger = FormatMessage(message, parameters, out format); Task.Run(() => logger.InfoFormat(format)); } public static void Warn(string message, params object[] parameters) { string format; var logger = FormatMessage(message, parameters, out format); //logger.WarnFormat(format); Task.Run(() => logger.WarnFormat(format)); } public static void Error(string message, params object[] parameters) { string format; var logger = FormatMessage(message, parameters, out format); Task.Run(() => logger.ErrorFormat(format)); } public static void Fatal(string message, params object[] parameters) { string format; var logger = FormatMessage(message, parameters, out format); Task.Run(() => logger.FatalFormat(format)); } private static ILog FormatMessage(string message, object[] parameters, out string format) { var frame = new StackFrame(2); var method = frame.GetMethod(); var className = ""; try { className = method.DeclaringType.ToString(); } catch { } var methodName = method.Name; var logger = LogManager.GetLogger(className); //should be cached if exists already var parsedMsg = ""; try { parsedMsg = string.Format(message, parameters); } catch (Exception) { //developer sent invalid string parsedMsg = "_String parse error."; } System.IO.File.AppendAllText(@"D:\Log_files\CpeApi_SimpleLogger.log", "[LogWrapper][FormatMessage] " + DateTime.UtcNow.ToString("yyyyMMdd_HHmmss") + "] " + methodName + parsedMsg + Environment.NewLine); format = string.Format("[{0}] ; {1}", methodName, parsedMsg); return logger; } } }