Common.Logging 2.1.1の背後にあるログ ライブラリをlog4net からNLog 2.0に切り替えた後、ASP.NET MVC 2 アプリケーションは正しくログを記録し続けましたが、HttpApplication.Session_Start
リクエストごとにメソッドを呼び出し始めました。
File
次の構成ファイルでNLog のターゲットを使用しようとしています。
web.config
<?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>
私はすでに次のことを試しました:
- アプリケーションのデバッグ。Cookieは
ASP.NET_SessionId
サーバーに送信されており、Session.SessionID
プロパティは要求間で変更されていません。 - Common.Logging - log4net に切り替えて、問題が Common.Logging - NLog に関連していることを確認します。できます。
- NLog の設定ファイルの targets ノードの属性を省略して
async="true"
、NLog の AsyncWrapper を無効にします。うまくいきません。 - 他の NLog ターゲットを使用して、試し
Debugger
てみDatabase
ました。できます。
ターゲットを保持する必要があり、File
NLog を使用したいと考えています。