展開時に Log4Net がログに記録されない

ディレクトリとファイルが作成されていない場合は、実行時に構成が読み取られていない (したがって使用されていない) 可能性が最も高いです。

構成を接続する Log4net のコードを 1 行追加するのをいつも忘れています。このコードは通常、アプリケーションのブートストラップ クラスに表示されます (例:ASP.NET アプリの Global.asax)。

XmlConfigurator.Configure(new System.IO.FileInfo(configFile));  // configFile being the path to the file.

上記のインラインの代わりに、この属性を AssemblyInfo.cs に追加できます ファイル:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

いずれにせよ、これにより log4net が接続されます。詳細については、log4net ドキュメントの手動構成セクションを参照してください。


IIS を使用している場合は、正しいグループがログ フォルダー (通常は IIS_USERS) への変更アクセス権を持っていることを確認してください。


私には許可の問題のように聞こえます。ほとんどの場合、アプリケーションがログ ファイルを書き込むための特別なアクセス許可を有効にする必要がないディレクトリを使用します。

以下は、私が log4net で一般的に使用するものです:

<file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/<Company Name>/Logs/<Program Name>/<Log file name>.txt" />

もちろん、上記の会社名、プログラム名、ログ ファイル名は実際の値に置き換える必要があります。

これは、アクセスが通常制限されていない ProgramData フォルダーに書き込みます。 %ProgramData% または %AllUsersProfile% と入力して、エクスプローラーでこのフォルダーに移動できます

この方法について私が気に入っているもう 1 つの点は、ほぼすべての Microsoft O/S で機能することです。 XP、Vista、7、8