サーチ…


備考

このセクションでは、log4netの概要、および開発者がそれを使用する理由を概説します。

また、log4net内の大きなテーマについても言及し、関連するトピックにリンクしてください。 log4netのドキュメントは新しくなっているので、それらの関連トピックの初期バージョンを作成する必要があります。

log4netの設定

単純なHello Worldコンソールアプリケーションを作成し、log4netを使用して何かをコンソールにログさせましょう。これを実行したら、以下の例で実際の開発シナリオで使用するようにスケールアウトすることができます。小さなものから始めてそこから作りましょう。

まず、以下に示すように、Visual StudioとWriteLine("Hello World")簡単なConsoleプロジェクトを作成する必要があります

ここに画像の説明を入力

次に、log4netライブラリをプロジェクトに追加する必要があります。したがって、 Referencesを右クリックし、 Manage NuGet Packagesを選択する必要があります

ここに画像の説明を入力

次に、 log4netを検索してインストールします。

ここに画像の説明を入力

これでlog4net.dllがプロジェクトに追加されました。

これでapp.config (またはWebアプリケーションの場合はweb.config)を設定する必要があります。この部分は少しトリッキーですが、パニックにはなりません。私たちはそれを段階的に実行し、ログオンして実行しています。

app.configの下では、最初に設定の下にconfigセクションを作成する必要があります。次のような名前とタイプを指定する必要があります。

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>

私たちがここで行ったことは、探している必要があるlog4netという設定ファイルにセクションを作成するということです。ロギングに関連するすべてがここにあります。ログファイルの作成から、どのような情報をロギングする必要がありますか。では、 log4netセクションを作成しましょう。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

log4netセクションの最初に追加するのはアペンダーです。アペンダーは基本的にロギングツールです。それは私たちのログを記録するものです。ファイル、データベースなどにログインするために使用できるアペンダーはたくさんあります。この例ではコンソールウィンドウにログを記録しますので、コンソールアペンダーを作成しましょう:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  
  </appender>
</log4net>

次に、レイアウトを定義する必要があります。

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    
    </layout>
  </appender>
</log4net>

レイアウトの下で、コンソールに表示する内容と表示方法を定義します。このためには、変換パターンが必要です。私たちが使用できるパターンにはさまざまな種類があります。この例では、かなり単純なパターンに固執します。

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
    </layout>
  </appender>
</log4net>

上記のことは、絶対タイムスタンプ、例外をスローする実行スレッド、ロギングレベルの情報が必要であるということです。 log4netには7つのログレベルがあります。

  • OFF - 何もログに記録されません(呼び出すことはできません)
  • 致命的
  • エラー
  • 警告
  • 情報
  • デバッグ
  • ALL - すべてがログに記録されます(呼び出すことはできません)

しかし、7では5(DEBUG、INFO、WARN、ERROR、FATAL)しか使用できません。ログレベルをDEBUGに設定すると、DEBUG、INFO、WARN、ERROR、およびFATALのすべてがログに記録されます。ただし、WARNにログレベルを宣言すると、WARN、ERROR、およびFATALのみが記録されます。あなたが階層を理解することを願っています。

app.configの下で必要なのはルートセクションです。ルートセクションには、最上位レベルのロガーとログに記録するレベルが格納されています。すべてがルートから継承することを理解することが重要です。ルートの下で参照されない限り、アペンダーはログに記録しません。これが追加されたことで、これはapp.configが次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration> 

configファイルのセクションをコピー&ペーストするのは悪い考えではありませんが、その責任について理解することが重要です。 app.configの設定が完了したら 、Consoleプロジェクトに少しのコードを追加する必要があります。まず、クラス外に配置する必要があるワンタイムエントリを定義する必要があります。

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

Program.csファイルのusingステートメントのすぐ下に置きます。次にロギングに使用するロガーのインスタンスを作成する必要があります。これはクラスごとに1回行われます。

private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

最後に、何かを記録する必要があります

log.Error("This is my error");

Program.csファイルは次のようになります。

using System;

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

namespace Log4netTutorial
{
    class Program
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            log.Error("This is my error");

            Console.ReadLine();
        }
    }
}

先に進んでプログラムを実行すると、エラーがコンソールに記録されます。

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow