【问题标题】:Logging Unique Request IDs in text file NLog - To differentiate between requests在文本文件 NLog 中记录唯一请求 ID - 区分请求
【发布时间】:2013-11-20 06:20:25
【问题描述】:

我在我的应用程序中使用 NLog 日志记录机制。我面临的问题是当并发请求命中应用程序日志记录是异步完成的,我无法识别哪一行属于哪个请求。 NLog 中有没有办法将配置设置为 NLog 本身为每个请求记录一个唯一的请求 ID?

<?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">  
<targets>    
<!-- add your targets here -->
<target xsi:type="File" name="file"    fileName="E:\IBELogs\AirAvailability\AirAvailability.log" layout="${longdate}        ${uppercase:${level}} ${message}" />    
</targets>
<rules>
<!-- add your logging rules here --> 
<logger name="*" minlevel="Trace" writeTo="file" />    
</rules>
</nlog>

【问题讨论】:

    标签: logging nlog


    【解决方案1】:

    在 NLog 4.1 中引入了 ${activityid},请参阅 here。我不能说MSDN documentation 对它的价值足够清楚,但到目前为止,这对我们有用,因为我们的 webAPI 应用程序中的每个请求都被分配了一个唯一的 GUID,并且它在我们看到的整个请求中都被保留了相同的在同一请求中的多个 Nlog 操作中的值。

    【讨论】:

      【解决方案2】:

      您必须自己生成您的唯一 ID。然后,您可以将唯一 ID 设置为 MDC,并设置适当的布局格式,以便将您的唯一 ID 从 MDC 输出到日志中。

      【讨论】:

      • 谢谢Wilx... 作为新手,您能告诉我如何生成唯一的请求ID 并将其设置为MDC 吗?请
      【解决方案3】:

      我们遇到了类似的问题,我们使用线程 ID 来识别日志文件中的行。因此指定如下布局:

      <target ... layout="threadID: ${threadid} ${message}"/>
      

      如果并发请求的性质不同,最好创建多个记录器,每个请求类型一个。然后你可以这样做:

      <target ... layout="logger: ${logger} ${message}"/>
      

      我希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        步骤1.在Global.asax中初始化Trace.CorrelationManager.ActivityId

            protected void Application_BeginRequest()
            {
                Trace.CorrelationManager.ActivityId = Guid.NewGuid();
            }
        

        步骤 2. 在 NLog.config 中添加 ${activiryid}

        layout="${longdate}|${activityid}|${threadid}|${level:uppercase=true}|${callsite}|Line-${callsite-linenumber}|${message}"
        

        那么日志文件中的activityid就可以当做request id了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          • 2020-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-10
          • 1970-01-01
          相关资源
          最近更新 更多