コンソールアプリケーションでログ出力を実装し、ログレベルごとに文字色・背景色を個別設定できます。デバッグ作業時に視認性が大きく向上します。
- Visual Studioで新規コンソールアプリケーションを作成
- プロジェクトに
App.config設定ファイルを追加 - log4netを導入(NuGetからインストール / log4net.dllを参照)
App.config内にlog4netの設定を記述- コード上で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)

コンソールログ出力
Previous: ログがデータベースへ書き込まれます
Next: 独立設定ファイル