AI インタビュアー: Asp.Net での Log4Net の使用 (1)

AI インタビュアー: Asp.Net での Log4Net の使用 (1)

インタビューで log4net ログ フレームワークの使用に関する質問が含まれる場合、通常は、log4net を .NET または .NET Core アプリケーションに統合して使用する方法に焦点を当てます。ここでは、log4net に関するインタビューの質問と、対応する回答、例、およびコードをいくつか示します。

1.log4netとは何ですか? それは何をするためのものか?

回答: log4net は、.NET アプリケーションの情報をログに記録するためのオープンソースのログ フレームワークです。これは、開発者がアプリケーションのデバッグ、監視、エラー追跡のために、さまざまなレベルのログ情報をさまざまなターゲット (ファイル、データベース、コンソールなど) に出力するのに役立ちます。

ケースとコード: .NET Core Web API アプリケーションがあるとします。log4net を統合することで API リクエストと例外情報を記録し、ログ情報をファイルに出力できます。

// 首先,通过NuGet安装log4net包

// 在Startup.cs中添加log4net配置
public void ConfigureLogging(IServiceCollection services)
{
    
    
    services.AddLogging(builder =>
    {
    
    
        builder.AddLog4Net(); // 添加log4net
    });
}

2. log4net のログ レベルは何ですか? ログレベルを設定するにはどうすればよいですか?

DEBUG回答: log4net は、 、INFOWARNERROR含むいくつかのログ レベルを定義しますFATALログ レベルは、構成ファイルまたはコード内の特定のノードの設定<root>またはプロパティによって指定できます。<logger>level

ケースとコード: INFO レベル以上のログ情報を出力するなど、log4net 構成ファイルでログ レベルを設定します。

<log4net>
    <root>
        <level value="INFO" />
        <appender-ref ref="FileAppender" />
    </root>
    <!-- 其他appender配置 -->
</log4net>

3. log4net を使用して .NET Core アプリケーションにログインするにはどうすればよいですか?

回答: .NET Core アプリケーションで log4net を使用するには、統合のためにサードパーティのライブラリを使用する必要がありますlog4net.Extensions.Logginglog4net の構成を追加し、コード内のインターフェイスを使用してILoggerログを記録します。

例とコード: .NET Core コンソール アプリケーションでの log4net によるログ記録:

class Program
{
    
    
    private static readonly ILog log = LogManager.GetLogger(typeof(Program));

    static void Main(string[] args)
    {
    
    
        // 初始化log4net
        var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
        XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

        log.Info("Application started");

        try
        {
    
    
            // 业务逻辑代码
            log.Debug("Some debug information");
        }
        catch (Exception ex)
        {
    
    
            log.Error("An error occurred", ex);
        }

        log.Info("Application ended");
    }
}

4. log4net はどのようにしてログをファイルに出力しますか?

回答:RollingFileAppenderまたは を使用しFileAppenderてログをファイルに出力できます。FileAppender起動するたびに新しいログ ファイルが作成されますが、RollingFileAppender構成されたファイル サイズまたは日付に基づいて異なるログ ファイルが生成されます。

ケースとコード: log4net 構成ファイルを追加してFileAppender、ログをファイルに出力します。

<log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="logs/application.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %level %logger - %message%newline" />
        </layout>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="FileAppender" />
    </root>
</log4net>

5. log4net はどのようにしてログ情報をデータベースに出力しますか?

AdoNetAppender回答:データベースに出力されたログ情報を利用できます。データベース接続文字列、ログ テーブルの構造、および対応する SQL ステートメントを構成する必要があります。

ケースとコード: log4net 構成ファイルを追加してAdoNetAppender、データベースにログを出力します。

<log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <!-- 数据库连接字符串 -->
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True;" />

        <!-- 日志表的结构 -->
        <commandText value="INSERT INTO LogTable (Date, Level, Logger, Message) VALUES (@log_date, @log_level, @logger, @message)" />
        <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="AdoNetAppender" />
    </root>
</log4net>

おすすめ

転載: blog.csdn.net/qq_36799389/article/details/131926313