Пример #1
0
        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!
        }
Пример #2
0
        private static void LogEvent(object sender, DoWorkEventArgs e)
        {
            LogMessageSpec messageSpec = (LogMessageSpec)e.Argument;

            PerformLog(messageSpec);
        }
Пример #3
0
        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!
        }