コンソールログ出力

コンソールアプリケーションでログ出力を実装し、ログレベルごとに文字色・背景色を個別設定できます。デバッグ作業時に視認性が大きく向上します。

  1. Visual Studioで新規コンソールアプリケーションを作成
  2. プロジェクトにApp.config設定ファイルを追加
  3. log4netを導入(NuGetからインストール / log4net.dllを参照)
  4. App.config内にlog4netの設定を記述
  5. コード上でlog4netを初期化しログを出力

コンソールログはログレベル別に文字色、背景色を割り当て、ログの種類を見分けやすくできます。

App.config 設定

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!-- カラーコンソール出力用アペンダー ColoredConsoleAppender -->
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <!-- ERRORレベルの配色 -->
      <mapping>
        <level value="ERROR" />
        <foreColor value="White" />
        <backColor value="Red, HighIntensity" />
      </mapping>
      <!-- DEBUGレベルの配色 -->
      <mapping>
        <level value="DEBUG" />
        <backColor value="Green" />
      </mapping>
      <!-- INFOレベルの配色 -->
      <mapping>
        <level value="Info" />
        <backColor value="Yellow" />
      </mapping>
      <!-- WARN、FATALの配色は必要に応じて追加してください -->

      <!-- ログ出力フォーマットテンプレート -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- ルートロガー、コンソール出力を有効化 -->
    <root>
      <level value="All" />
      <appender-ref ref="ColoredConsoleAppender" />
    </root>
  </log4net>
</configuration>Code language: HTML, XML (xml)
フォーマットプレースホルダー解説
  • %date:ログ出力日時
  • [%thread]:スレッドID
  • %-5level:ログレベル(5文字幅で位置揃え)
  • %logger:ログ出力元クラス名
  • %message:ログ本文
  • %newline:自動改行

Program.cs

using System;
using log4net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // log4net設定を読み込み初期化
            log4net.Config.XmlConfigurator.Configure();
            // ロガーインスタンス取得、現在のクラスを指定し出力元を追跡
            ILog logger = LogManager.GetLogger(typeof(Program));

            // 各レベルのログを出力
            logger.Info("通常ログ");
            logger.Error("エラーログ");
            logger.Debug("デバッグ情報");
            logger.Fatal("致命的なエラー");
            logger.Warn("警告メッセージ");

            Console.ReadKey();
        }
    }
}Code language: JavaScript (javascript)

実行結果

ログレベルに応じてコンソール上に自動で背景色が付きます:

  • INFO:黄色背景
  • DEBUG:緑色背景
  • ERROR / FATAL:鮮やかな赤色背景
  • WARN:黄色背景

出力サンプル:

2017-03-21 20:35:31,550 [9] INFO  ConsoleApplication1.Program [(null)] - 通常ログ
2017-03-21 20:35:31,592 [9] ERROR ConsoleApplication1.Program [(null)] - エラーログ
2017-03-21 20:35:31,592 [9] DEBUG ConsoleApplication1.Program [(null)] - デバッグ情報
2017-03-21 20:35:31,593 [9] FATAL ConsoleApplication1.Program [(null)] - 致命的なエラー
2017-03-21 20:35:31,594 [9] WARN  ConsoleApplication1.Program [(null)] - 警告メッセージCode language: CSS (css)

コンソールログ出力

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です