NLog.LogEventInfo.SetStackTrace C# (CSharp) Method

SetStackTrace() public method

Sets the stack trace for the event info.
public SetStackTrace ( Windows.Adapters.StackTrace stackTrace, int userStackFrame ) : void
stackTrace Windows.Adapters.StackTrace The stack trace.
userStackFrame int Index of the first user stack frame within the stack trace.
return void
        public void SetStackTrace(StackTrace stackTrace, int userStackFrame)
        {
            this.StackTrace = stackTrace;
            this.UserStackFrameNumber = userStackFrame;
        }
#endif

Usage Example

Esempio n. 1
0
        private void ProcessLogEventInfo(LogLevel logLevel, string loggerName, [Localizable(false)] string message, object[] arguments, int?eventId)
        {
            var ev = new LogEventInfo();

            ev.LoggerName = (loggerName ?? this.Name) ?? string.Empty;

#if !NET_CF
            if (this.AutoLoggerName)
            {
                var        stack          = new StackTrace();
                int        userFrameIndex = -1;
                MethodBase userMethod     = null;

                for (int i = 0; i < stack.FrameCount; ++i)
                {
                    var frame  = stack.GetFrame(i);
                    var method = frame.GetMethod();

                    if (method.DeclaringType == this.GetType())
                    {
                        // skip all methods of this type
                        continue;
                    }

                    if (method.DeclaringType.Assembly == systemAssembly)
                    {
                        // skip all methods from System.dll
                        continue;
                    }

                    userFrameIndex = i;
                    userMethod     = method;
                    break;
                }

                if (userFrameIndex >= 0)
                {
                    ev.SetStackTrace(stack, userFrameIndex);
                    if (userMethod.DeclaringType != null)
                    {
                        ev.LoggerName = userMethod.DeclaringType.FullName;
                    }
                }
            }
#endif

            ev.TimeStamp  = CurrentTimeGetter.Now;
            ev.Message    = message;
            ev.Parameters = arguments;
            ev.Level      = this.forceLogLevel ?? logLevel;

            if (eventId.HasValue)
            {
                ev.Properties.Add("EventID", eventId.Value);
            }

            Logger logger = LogManager.GetLogger(ev.LoggerName);
            logger.Log(ev);
        }
All Usage Examples Of NLog.LogEventInfo::SetStackTrace