Log4netを使用して簡単なシナリオを作成しましたが、ログファイルにメッセージが追加されないため、アペンダーが機能しないようです。
Web.configファイルに次を追加しました。
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
グローバルASAXファイル内に追加したもの:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
そして、Application_Startメソッド内で:
logger.Info("Starting the application...");
私は何を間違えましたか?
電話しますか
log4net.Config.XmlConfigurator.Configure();
log4netに設定を読み取らせる場所はどこですか?例えば。 Global.asaxで:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// Initialize log4net.
log4net.Config.XmlConfigurator.Configure();
}
このFAQページを使用してください: Apache log4netよくある質問
約3/4の方法で、アプリケーショントレースを使用してlog4netデバッグを有効にする方法を示します。これにより、問題の場所がわかります。
基本は次のとおりです。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
そして、標準出力にトレースが表示されます
@AndreasPaulssonが示唆したように、設定する必要があります。 AssemblyInfo
ファイルで構成を行っています。ここでconfiguration file name
を指定します。
// Log4Net Configuration.
[Assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
サイトが実行されているプロセス(アカウント)が出力ディレクトリに書き込む権限を持っていることを確認してください。
IIS 7以降では、これはアプリケーションプールで構成され、通常は AppPool Identity であり、通常はすべてのディレクトリへの書き込み権限がありません。
イベントログ(アプリケーションとセキュリティ)をチェックして、例外がスローされたかどうかを確認します。
インサート:
[Assembly: log4net.Config.XmlConfigurator(Watch = true)]
AssemblyInfo.csファイルの最後
私の場合、プロジェクト名にスペースが含まれているため、log4netは適切にログを記録していませんでした。同じコードが別のプロジェクトではうまく機能したが、新しいコードではうまくいかなかった理由を私に夢中にさせた。スペース。シンプルなスペース。
そのため、プロジェクト名にはスペースを入れてください。私はレッスンを学びました。
私にとっては、ログファイルの場所を移動しましたが、それはファイルの名前を別の名前に変更したときだけでした。
同じ名前のログファイルがすでに存在する場合、何も起こりません。
その後、古いファイルの名前を変更し、構成内のログファイル名を元に戻しました。
私の場合、ログファイルにIIS_IUSRS
読み取り/書き込み権限を付与する必要がありました。