当前位置: 首页>>代码示例>>C#>>正文


C# LogEventInfo.SetStackTrace方法代码示例

本文整理汇总了C#中LogEventInfo.SetStackTrace方法的典型用法代码示例。如果您正苦于以下问题:C# LogEventInfo.SetStackTrace方法的具体用法?C# LogEventInfo.SetStackTrace怎么用?C# LogEventInfo.SetStackTrace使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LogEventInfo的用法示例。


在下文中一共展示了LogEventInfo.SetStackTrace方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Write

        internal static void Write(Type loggerType, TargetWithFilterChain targets, LogEventInfo logEvent, LogFactory factory)
        {
            if (targets == null)
            {
                return;
            }

#if !NET_CF
            StackTraceUsage stu = targets.GetStackTraceUsage();

            if (stu != StackTraceUsage.None && !logEvent.HasStackTrace)
            {
                StackTrace stackTrace;
#if !SILVERLIGHT
                stackTrace = new StackTrace(StackTraceSkipMethods, stu == StackTraceUsage.WithSource);
#else
                stackTrace = new StackTrace();
#endif

                int firstUserFrame = FindCallingMethodOnStackTrace(stackTrace, loggerType);

                logEvent.SetStackTrace(stackTrace, firstUserFrame);
            }
#endif

            int originalThreadId = Thread.CurrentThread.ManagedThreadId;
            AsyncContinuation exceptionHandler = ex =>
                {
                    if (ex != null)
                    {
                        if (factory.ThrowExceptions && Thread.CurrentThread.ManagedThreadId == originalThreadId)
                        {
                            throw new NLogRuntimeException("Exception occurred in NLog", ex);
                        }
                    }
                };

            for (var t = targets; t != null; t = t.NextInChain)
            {
                if (!WriteToTargetWithFilterChain(t, logEvent, exceptionHandler))
                {
                    break;
                }
            }
        }
开发者ID:unhappy224,项目名称:NLog.IqMetrix,代码行数:45,代码来源:LoggerImpl.cs

示例2: CallSiteShouldWorkEvenInlined

 public void CallSiteShouldWorkEvenInlined()
 {
     Type loggerType = typeof(Logger);
     var stacktrace = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
     var index = LoggerImpl.FindCallingMethodOnStackTrace(stacktrace, loggerType);
     var logEvent = new LogEventInfo(LogLevel.Error, "logger1", "message1");
     logEvent.SetStackTrace(stacktrace, index);
     Layout l = "${callsite}";
     var callSite = l.Render(logEvent);
     Assert.Equal("NLog.UnitTests.LayoutRenderers.CallSiteTests.CallSiteShouldWorkEvenInlined", callSite);
 }
开发者ID:bhaeussermann,项目名称:NLog,代码行数:11,代码来源:CallSiteTests.cs

示例3: GetAsyncCallSite

        public async Task<string> GetAsyncCallSite()
        {
            Type loggerType = typeof(Logger);
            var stacktrace = StackTraceUsageUtils.GetWriteStackTrace(loggerType);
            var index = LoggerImpl.FindCallingMethodOnStackTrace(stacktrace, loggerType);
            var logEvent = new LogEventInfo(LogLevel.Error, "logger1", "message1");
            logEvent.SetStackTrace(stacktrace, index);

            await Task.Delay(0);

            Layout l = "${callsite}";
            var callSite = l.Render(logEvent);
            return callSite;
        }
开发者ID:CharlieBP,项目名称:NLog,代码行数:14,代码来源:CallSiteTests.cs


注:本文中的LogEventInfo.SetStackTrace方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。