166

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...");

テスト ログ「アプリケーションを起動しています...」がログ ファイルに追加されないのはなぜですか?

4

13 に答える 13

329

電話しますか

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();
}
于 2010-09-01T21:15:05.730 に答える
55

この FAQ ページを使用してください: Apache log4net のよくある質問

約 3/4 で、アプリケーション トレースを使用して log4net デバッグを有効にする方法が説明されています。これにより、問題がどこにあるかがわかります。

基本は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

そして、標準出力にトレースが表示されます

于 2010-09-01T13:38:14.847 に答える
39

@AndreasPaulsson が提案したように、構成する必要があります。ファイルで構成を行っていAssemblyInfoます。こちらを指定しconfiguration file nameます。

// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
于 2013-02-04T08:25:29.490 に答える
26

サイトが実行されているプロセス (アカウント) に、出力ディレクトリへの書き込み権限があることを確認してください。

IIS 7 以降では、これはアプリケーション プールで構成され、通常はAppPool Identityであり、通常、すべてのディレクトリへの書き込み権限はありません。

イベント ログ (アプリケーションとセキュリティ) をチェックして、例外がスローされたかどうかを確認します。

于 2010-09-01T13:16:27.180 に答える
21

入れる:

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

AssemblyInfo.csファイルの最後に

于 2015-09-08T11:30:53.977 に答える
2

私の場合、プロジェクト名にスペースが含まれているため、log4net が適切にログを記録していませんでした。同じコードが別のプロジェクトでは問題なく機能したが、新しいプロジェクトでは機能しなかった理由に夢中になりました。スペース。シンプルな空間。

そのため、プロジェクト名にはスペースに注意してください。私は教訓を学びました。

于 2016-08-19T14:17:15.250 に答える