【问题标题】:Why NLog ${aspnet-request-host} is empty?为什么 NLog ${aspnet-request-host} 是空的?
【发布时间】:2017-08-09 19:17:50
【问题描述】:

我正在我的桌面上运行 WCF 服务。我在NLog.config 文件中使用${aspnet-request-host}。执行 Web 服务后,我得到了响应,但它没有记录 host 信息。我正在使用 .NET Framework 4。

我已经添加了

<extensions>
     <add assembly="NLog.Web"/>
</extensions> 

这块到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="false"
      internalLogLevel="Error" internalLogFile="C:/Users/sranade/nlog-internal.log">

  <extensions>
    <add assembly="NLog.Web"/>
  </extensions>
  <!-- optional, add some variables
  https://github.com/nlog/NLog/wiki/Configuration-file#variables
  -->

  <!--
  See https://github.com/nlog/nlog/wiki/Configuration-file
  for information on customizing logging rules and outputs.
   -->
  <targets>

    <!--
    add your targets here
    See https://github.com/nlog/NLog/wiki/Targets for possible targets.
    See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
    -->

    <!-- database target -->
    <target name="database"
            xsi:type="Database"
            connectionStringName="NLog"
            commandText="exec dbo.InsertLog
                            @level,
                            @request,
                            @response,
                            @requesttype,
                            @retailerid,
                            @storenumber,
                            @retailerreferenceid,
                            @sourceip,
                            @transactiondate,
                            @transactiondatetime,
                            @processingtime,
                            @servername,
                            @callSite,
                            @type,
                            @message,
                            @stackTrace,
                            @innerException,
                            @additionalInfo">
      <parameter name="@level" layout="${level}" />
      <parameter name="@request" layout="${event-properties:item=request}" />
      <parameter name="@response" layout="${event-properties:item=response}" />
      <parameter name="@requesttype" layout="${event-properties:item=requesttype}" />
      <parameter name="@retailerid" layout="${event-properties:item=retailerid}" />
      <parameter name="@storenumber" layout="${event-properties:item=storenumber}" />
      <parameter name="@retailerreferenceid" layout="${event-properties:item=retailerreferenceid}" />
      <parameter name="@sourceip" layout="${event-properties:item=sourceip}" />
      <parameter name="@transactiondate" layout="${event-properties:item=transactiondate}" />
      <parameter name="@transactiondatetime" layout="${event-properties:item=transactiondatetime}" />
      <parameter name="@processingtime" layout="${event-properties:item=processingtime}" />
      <parameter name="@servername" layout="${event-properties:item=servername}" />
      <parameter name="@callSite" layout="${callsite}" />
      <parameter name="@type" layout="${exception:format=type}" />
      <parameter name="@message" layout="${exception:format=message}" />
      <parameter name="@stackTrace" layout="${exception:format=stackTrace}" />
      <parameter name="@innerException"
                 layout="${exception:format=:innerFormat=ShortType,Message,Method:MaxInnerExceptionLevel=1:InnerExceptionSeparator=}" />
      <parameter name="@additionalInfo" layout="${message}" />
    </target>
  </targets>

  <rules>
    <!-- add your logging rules here -->
    <logger levels="Error,Warn,Fatal,Debug,Info" name="databaseLogger" writeTo="database"/>
    <!--
    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
    <logger name="*" minlevel="Debug" writeTo="f" />
    -->
  </rules>
</nlog>

【问题讨论】:

  • 你的 NLog.Config 文件是什么样的以及 NLog 的版本是什么?
  • NLog 和 NLog.web 有哪些版本?它在 HttpContext.Current.Request.UserHostName 内部使用,不确定 WCF 中是否可用
  • @John 已添加 NLog.config
  • @Julian NLog v4.4.12 和 NLog.Web v4.5.0
  • WCF 可以由 ASP.Net 托管,但不是必须的;即使是,WCF 也不会通过 ASP.Net 请求管道。您如何托管 WCF 服务?

标签: c# .net wcf nlog


【解决方案1】:

不确定您是否能够获得该值,因为 WCF 不通过 ASP.Net 运行。

您可以尝试将其打开 aspNetCompatibilityEnabled,但它仍然可能无法提供价值并且可能会导致问题。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多