为什么 NLog ${aspnet-request-host} 是空的?
Why NLog ${aspnet-request-host} is empty?
我是 运行 我桌面上的 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>
不确定您是否能够获得该值,因为 WCF 不会 运行 到 ASP.Net。
您可以尝试将其启用 aspNetCompatibilityEnabled,但它仍然可能无法提供值并可能导致问题。
我是 运行 我桌面上的 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>
不确定您是否能够获得该值,因为 WCF 不会 运行 到 ASP.Net。
您可以尝试将其启用 aspNetCompatibilityEnabled,但它仍然可能无法提供值并可能导致问题。