private static void LogEvent(object sender, DoWorkEventArgs e) { try { LogMessageSpec messageSpec = (LogMessageSpec)e.Argument; StackFrame frame = messageSpec.Stack.GetFrame(2); MethodBase method = frame.GetMethod(); Type reflectedType = method.ReflectedType; ILogger log = LoggerManager.GetLogger(reflectedType.Assembly, reflectedType); Level currenLoggingLevel = ((log4net.Repository.Hierarchy.Logger)log).Parent.Level; if (messageSpec.LogLevel < currenLoggingLevel) { return; } messageSpec.Message = string.Format(messageSpec.Message, messageSpec.Parameters); string stackTrace = ""; StackFrame[] frames = messageSpec.Stack.GetFrames(); if (frames != null) { foreach (StackFrame tempFrame in frames) { MethodBase tempMethod = tempFrame.GetMethod(); stackTrace += tempMethod.Name + Environment.NewLine; } } string userName = Thread.CurrentPrincipal.Identity.Name; LoggingEventData evdat = new LoggingEventData { Domain = stackTrace, Identity = userName, Level = messageSpec.LogLevel, LocationInfo = new LocationInfo(reflectedType.FullName, method.Name, frame.GetFileName(), frame.GetFileLineNumber().ToString()), LoggerName = reflectedType.Name, Message = messageSpec.Message, TimeStamp = messageSpec.LogTime, UserName = userName, ExceptionString = messageSpec.ExceptionMessage }; log.Log(new LoggingEvent(evdat)); } catch (Exception) { }//don't throw exceptions on background thread especially about logging! }
private static void LogEvent(object sender, DoWorkEventArgs e) { LogMessageSpec messageSpec = (LogMessageSpec)e.Argument; PerformLog(messageSpec); }
private static void PerformLog(LogMessageSpec messageSpec) { try { StackFrame frame = messageSpec.Stack.GetFrame(2); MethodBase method = frame.GetMethod(); Type reflectedType = method.ReflectedType; ILogger log = LoggerManager.GetLogger(reflectedType.Assembly, reflectedType); Level currenLoggingLevel = ((log4net.Repository.Hierarchy.Logger)log).Parent.Level; if (messageSpec.LogLevel < currenLoggingLevel) return; messageSpec.Message = string.Format(messageSpec.Message, messageSpec.Parameters); string stackTrace = ""; StackFrame[] frames = messageSpec.Stack.GetFrames(); if (frames != null) { foreach (StackFrame tempFrame in frames) { MethodBase tempMethod = tempFrame.GetMethod(); stackTrace += tempMethod.Name + Environment.NewLine; } } string userName = Thread.CurrentPrincipal.Identity.Name; LoggingEventData evdat = new LoggingEventData { Domain = stackTrace, Identity = userName, Level = messageSpec.LogLevel, LocationInfo = new LocationInfo(reflectedType.FullName, method.Name, frame.GetFileName(), frame.GetFileLineNumber().ToString()), LoggerName = reflectedType.Name, Message = messageSpec.Message, TimeStamp = messageSpec.LogTime, UserName = userName, ExceptionString = messageSpec.ExceptionMessage }; log.Log(new LoggingEvent(evdat)); } catch (Exception) { }//don't throw exceptions on background thread especially about logging! }