在将Common.Logging 2.1.1后面的日志库从 log4net 切换到NLog 2.0后,我的 ASP.NET MVC 2 应用程序保持正确的日志记录,但它开始HttpApplication.Session_Start
为每个请求调用该方法。
我正在尝试将 NLog 的File
目标与以下配置文件一起使用:
网络配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="common">
<section
name="logging"
type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
.
.
.
<configSections>
.
.
.
<common>
<logging>
<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20">
<arg key="configType" value="FILE" />
<arg key="configFile" value="~/NLog.config" />
</factoryAdapter>
</logging>
</common>
</configuration>
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">
<!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<targets async="true">
<target
name="f"
xsi:type="File"
fileName="${basedir}/bin/statistics/logs/${shortdate}.log"
layout="${longdate}	${uppercase:${level}}	${callsite}	${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
</nlog>
我已经尝试过以下方法:
- 调试应用程序。
ASP.NET_SessionId
cookie 被发送到服务器,并且属性Session.SessionID
在请求之间没有变化。 - 切换回 Common.Logging - log4net 以验证问题是否与 Common.Logging - NLog 有关。有用。
- 省略
async="true"
NLog 配置文件的 targets 节点中的属性以禁用 NLog 的 AsyncWrapper。它不起作用。 - 使用其他 NLog 目标,尝试
Debugger
和Database
. 有用。
我需要坚持File
目标,我想使用 NLog。