log4net を ASP.NET 3.5 から動作させるのに問題があります。log4net を使用するのはこれが初めてで、パズルのピースが欠けているように感じます。
私のプロジェクトは log4net アセンブリを参照しており、私が知る限り、サーバーに正常にデプロイされています。
私のweb.configには以下が含まれています:
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler
, log4net"
requirePermission="false"/>
</configSections>
<log4net>
<appender name="InfoAppender" type="log4net.Appender.FileAppender">
<file value="..\..\logs\\InfoLog.html" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<logger name="_Default">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
</log4net>
次のコードを使用してロガーをテストしています。
using log4net;
using log4net.Config;
public partial class _Default : System.Web.UI.Page
{
private static readonly ILog log = LogManager.GetLogger("_Default");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Hello logging world!");
}
}
私の Global.asax では、次のことを行っています。
void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
この時点で、他に何が間違っているのか考えられません。ログを保存しようとしているディレクトリは書き込み可能であり、別のディレクトリを試しても同じ結果が得られます。ファイルもログもありません。
助言がありますか?:-)
編集:ログファイルのパスと名前にいくつかの異なる形式を試しました。その中には、「..\..\InfoLog.html」、「InfoLog.html」、「logs\InfoLog.html」などが含まれます、誰かがそれが問題かどうか疑問に思っている場合に備えて。
編集: ルート ロガー ノードを log4net セクションに追加し直しました。サンプルからコピーするときに誤ってそれを省略しました。ルート ロガー ノードは次のようになります。
<root>
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</root>
それでも、まだ運がありません。