2

在将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}&#009;${uppercase:${level}}&#009;${callsite}&#009;${message}"/>
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="f" />
    </rules>
</nlog>

我已经尝试过以下方法:

  • 调试应用程序。ASP.NET_SessionIdcookie 被发送到服务器,并且属性Session.SessionID在请求之间没有变化。
  • 切换回 Common.Logging - log4net 以验证问题是否与 Common.Logging - NLog 有关。有用。
  • 省略async="true"NLog 配置文件的 targets 节点中的属性以禁用 NLog 的 AsyncWrapper。它不起作用。
  • 使用其他 NLog 目标,尝试DebuggerDatabase. 有用。

我需要坚持File目标,我想使用 NLog。

4

0 回答 0