堆栈跟踪与行号nLog

时间:2017-02-09 16:08:44

标签: c# asp.net-mvc nlog

我最近一直在使用nLog将其他日志记录添加到我们的某个Web应用程序中。一切都很顺利,除非我们想在我们的测试环境中捕获文件名和行号以帮助调试。我以为我得到了答案:layout="${stacktrace:format=raw}"虽然看起来它可能在某些情况下起作用,但它并没有在我的测试中。它产生了以下输出:

InvokeActionMethodFilterAsynchronouslyRecursive at offset 177 in file:line:column <filename unknown>:0:0
OnActionExecuting at offset 52 in file:line:column <filename unknown>:0:0
CheckAccess at offset 1514 in file:line:column <filename unknown>:0:0

请注意,文件名是&#34;未知&#34;并且行号和列号为0。

我仔细检查了我是否处于调试模式,当我检查异常时,我可以看到标准的.NET堆栈跟踪,它有文件名和行号:

at [REDACTED].CheckAccess(ActionExecutingContext& filterContext) in [REDACTED]\\attribute.cs:line 92

这是我的nLog.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

    <variable name="InstanceURL" value="localhost"/>

<targets>
    <target 
        name="MainLog" 
        xsi:type="Database" 
        connectionStringName="docsdb"
        commandText="insert into ErrorLog(Message,StackTrace,InnerExceptionMessage,DateOccurred,UserName, InstanceURL) values( @message, @stacktrace, @log_exception,@time_stamp,@user_name,@instance_url);"
    >
        <parameter name="@time_stamp" layout="${date:format=yyyy-MM-ddTHH\:mm\:ss.fff}"/>
        <parameter name="@message" layout="${message}"/>
        <parameter name="@user_name" layout="${windows-identity:domain=true}"/>
        <parameter name="@log_exception" layout="${exception:format=ToString}"/>
        <parameter name="@stacktrace" layout="${stacktrace:format=raw}"/>
        <parameter name="@instance_url" layout="${var:InstanceURL}"/>
    </target>
</targets>

  <rules>
        <logger name="*" minlevel="Info" writeTo="MainLog" />
    </rules>
</nlog>

我的问题是:
1)我是否正确配置堆栈跟踪? 2)有没有办法记录&#34; .Net风格&#34;堆栈跟踪?我更喜欢更冗长的.NET堆栈跟踪。

修改 这与丢失的PDB文件无关。包含PDB,如果我手动登录(在nlog之外)异常,堆栈跟踪包括文件名和行号。我试图弄清楚我需要做些什么来让nLog包含它们。感谢。

0 个答案:

没有答案