簡體   English   中英

NLog中不完整的堆棧跟蹤

[英]Incomplete Stack Trace in NLog

我正在一個應用程序中實現NLog。 日志執行的數據庫插入的配置包括此...

<parameter layout="${stacktrace:format=Raw}" name="@Stacktrace"/>

但是當寫入日志項時,輸出總是看起來像這樣......

文件中偏移量為85的MethodName1:行:列:0:0

文件中偏移量為93的MethodName2:行:列:0:0

文件中偏移量為160的MethodName3:行:列:0:0

任何人都可以建議為什么缺少文件名和位置詳細信息?

如果希望NLog顯示文件名和行號,請​​確保在“ 高級編譯器設置”對話框中將“ 生成調試信息”設置為“ 完全”或“ 僅限pdb

你的${stacktrace}是否包含任何有用的信息? 例如,假設一個非常簡單的程序,堆棧跟蹤看起來就像StackTraceLayoutRenderer之前那樣。

logEvent.StackTrace.GetFrames()
{System.Diagnostics.StackFrame[14]}
    [0]: {Write at offset 263 in file:line:column c:\Dev\NLogSrc\src\NLog\LoggerImpl.cs:76:17    }
    [1]: {WriteToTargets at offset 161 in file:line:column c:\Dev\NLogSrc\src\NLog\Logger.cs:542:13    }
    [2]: {Debug at offset 103 in file:line:column c:\Dev\NLogSrc\src\NLog\Logger1.cs:454:17    }
    [3]: {Build at offset 232 in file:line:column c:\Dev\NLogSrc\src\ConsoleApplication1\Program.cs:43:17    }
    [4]: {GetAnother at offset 77 in file:line:column c:\Dev\NLogSrc\src\ConsoleApplication1\Program.cs:25:17    }
    [5]: {Main at offset 85 in file:line:column c:\Dev\NLogSrc\src\ConsoleApplication1\Program.cs:16:13    }
    [6]: {_nExecuteAssembly at offset 0 in file:line:column <filename unknown>:0:0    }
    [7]: {ExecuteAssembly at offset 107 in file:line:column <filename unknown>:0:0    }
    [8]: {RunUsersAssembly at offset 40 in file:line:column <filename unknown>:0:0    }
    [9]: {ThreadStart_Context at offset 112 in file:line:column <filename unknown>:0:0    }
    [10]: {RunInternal at offset 180 in file:line:column <filename unknown>:0:0    }
    [11]: {Run at offset 22 in file:line:column <filename unknown>:0:0 }
    [12]: {Run at offset 65 in file:line:column <filename unknown>:0:0 }   
    [13]: {ThreadStart at offset 68 in file:line:column <filename unknown>:0:0    }

如果你看了第5項(我的代碼)和第6項(運行時(?)),那就有很多不同了

在此輸入圖像描述

此渲染器默認為堆棧中第一個不是源自NLog(#3)且TopFrames配置項默認為3的項目,因此我希望您的第一行有一些有價值的信息,而其他可能或可能不。

可能值得在日志記錄調用之前設置一個斷點,並在您的即時窗口中嘗試new System.Diagnostics.StackTrace(true).GetFrames() ,以查看與您所看到的值相比的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM