はじめに:「コンソールログ」は“今この瞬間の状態を一番早く知る窓”
業務でも、開発でも、まず一番手軽なのがコンソールログです。
画面にサッと出てくれるので、「今なにが起きているか」をリアルタイムで確認できます。
バッチ処理の進捗を見たい
API やツールの動きをその場で確認したい
デバッグ中に一時的に状態を出したい
こういうときに、コンソールログはとても強い味方になります。
ここでは、初心者向けに
Console.WriteLine の基本
色付きログで「重要度」を見やすくする
ILogger と組み合わせたコンソールログ
簡単なコンソールログユーティリティの作り方
を、例題付きでかみ砕いて説明します。
基本:Console.WriteLine でログを出してみる
一番シンプルなログ出力
コンソールアプリなら、まずはこれです。
Console.WriteLine("アプリを開始します。");
Console.WriteLine("処理中...");
Console.WriteLine("アプリを終了します。");
C#実行すると、コンソールにそのまま文字が出ます。
学習中や小さなツールなら、これだけでも十分役に立ちます。
ただ、業務で使うことを考えると、
いつのログなのか
どのレベル(情報・警告・エラー)なのか
どの処理のログなのか
が分からないと、後から読み返すのがつらくなります。
そこで、少しだけ「ログっぽく」整えていきます。
コンソールログを「ログっぽく」整える
日時とレベルを付ける
最低限、日時とレベルを付けるだけで、かなり読みやすくなります。
static void Log(string level, string message)
{
var line = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} [{level}] {message}";
Console.WriteLine(line);
}
Log("INFO", "アプリ開始");
Log("INFO", "処理中...");
Log("ERROR", "エラーが発生しました");
C#出力イメージはこんな感じです。
2026-04-17 11:30:01 [INFO] アプリ開始
2026-04-17 11:30:02 [INFO] 処理中...
2026-04-17 11:30:05 [ERROR] エラーが発生しました
ここでの重要ポイントは、「日時とレベルを付けるだけで、“ただの出力”が“ログ”になる」ということです。
これだけでも、後から見返したときの情報量が全然違います。
色付きコンソールログで「重要度」を一瞬で分かるようにする
Console.ForegroundColor を使う
コンソールは文字色を変えられます。
エラーは赤、警告は黄色、情報は白、のように色分けすると、パッと見で重要度が分かります。
static void LogInfo(string message)
{
Console.ForegroundColor = ConsoleColor.Gray;
Log("INFO", message);
Console.ResetColor();
}
static void LogWarning(string message)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Log("WARN", message);
Console.ResetColor();
}
static void LogError(string message)
{
Console.ForegroundColor = ConsoleColor.Red;
Log("ERROR", message);
Console.ResetColor();
}
C#使い方はこうです。
LogInfo("処理開始");
LogWarning("設定ファイルが見つかりません。デフォルト値を使用します。");
LogError("致命的なエラーが発生しました。");
C#ここでの重要ポイントは、「色を変えるときは必ず ResetColor で元に戻す」ことです。
戻し忘れると、その後の出力が全部同じ色になってしまいます。
例:バッチ処理の進捗をコンソールログで出す
「どこまで進んだか」をリアルタイムで確認する
夜間バッチやデータ移行ツールなどでは、進捗が見えるだけで安心感が違います。
static void RunBatch()
{
LogInfo("バッチ開始");
try
{
LogInfo("ステップ1開始");
Step1();
LogInfo("ステップ1完了");
LogInfo("ステップ2開始");
Step2();
LogInfo("ステップ2完了");
LogInfo("バッチ正常終了");
}
catch (Exception ex)
{
LogError($"バッチ異常終了: {ex}");
}
}
C#これを実行すると、コンソールに
どのステップまで進んだか
どこで落ちたか
がリアルタイムで表示されます。
ここでの重要ポイントは、「長めの処理には“開始”と“完了”のログをセットで出す」ことです。
コンソールでもファイルでも、このパターンは非常に有効です。
ILogger と組み合わせたコンソールログ(ASP.NET Core など)
「コードは ILogger、出力先としてコンソールを選ぶ」
ASP.NET Core などでは、ILogger<T> を使うのが標準です。
この ILogger の出力先として「コンソール」を選べます。
Program.cs(.NET 6 以降の最小ホスト)の例です。
var builder = WebApplication.CreateBuilder(args);
// 既定で Console ログは有効だが、明示的に書くとイメージしやすい
builder.Logging.ClearProviders();
builder.Logging.AddConsole(); // コンソールにログを出す
var app = builder.Build();
C#あとは、アプリ内のコードで普通に ILogger を使うだけです。
public class SampleService
{
private readonly ILogger<SampleService> _logger;
public SampleService(ILogger<SampleService> logger)
{
_logger = logger;
}
public void DoWork()
{
_logger.LogInformation("処理開始");
// 何か処理
_logger.LogInformation("処理完了");
}
}
C#実行すると、コンソールに日時・レベル・カテゴリ付きでログが出ます。
ここでの重要ポイントは、「コンソールに出すかどうかは“設定側の話”で、コード側は ILogger だけ意識すればいい」ということです。
あとから「ファイルにも出したい」「クラウドにも送りたい」となっても、コードを書き換えずに済みます。
コンソールログ用の小さなユーティリティを作る
毎回 Console.WriteLine と書かないための薄いラッパー
コンソールアプリや小さなツールでは、ILogger を使わずに、
自前のシンプルなロガーを用意するのも現実的です。
public static class ConsoleLogger
{
private static void Write(string level, ConsoleColor color, string message)
{
var line = $"{DateTime.Now:HH:mm:ss} [{level}] {message}";
var oldColor = Console.ForegroundColor;
Console.ForegroundColor = color;
Console.WriteLine(line);
Console.ForegroundColor = oldColor;
}
public static void Info(string message)
=> Write("INFO", ConsoleColor.Gray, message);
public static void Warn(string message)
=> Write("WARN", ConsoleColor.Yellow, message);
public static void Error(string message)
=> Write("ERROR", ConsoleColor.Red, message);
}
C#使い方はこうです。
ConsoleLogger.Info("ツール開始");
ConsoleLogger.Warn("設定ファイルが見つかりません。デフォルトを使用します。");
ConsoleLogger.Error("処理中にエラーが発生しました。");
C#ここでの重要ポイントは、「“ログのフォーマット”を 1 箇所に閉じ込める」ことです。
あとからフォーマットを変えたくなっても、このクラスだけ直せば全体に反映されます。
コンソールログとファイルログをどう使い分けるか
「今すぐ見たい」と「後からじっくり見たい」
コンソールログ
今この瞬間の動きをリアルタイムで見たいときに強い
開発中・検証中・手動実行のツールなどで便利
ファイルログ
後からじっくり調査したいときに強い
夜間バッチやサービスなど、あとでログを読み返す前提のものに向く
実務では、
開発中はコンソールログを見ながら動作確認
本番ではファイルログや集中ログ(クラウドなど)をメインに見る
という使い分けが多いです。
ILogger を使っていれば、「コンソールにも出す」「ファイルにも出す」を同時に設定することもできます。
ここでの重要ポイントは、「コンソールログは“その場の確認用”、ファイルログは“証拠として残す用”と考える」と整理しやすい、ということです。
まとめ:「コンソールログユーティリティ」は“開発とバッチの心強い相棒”
コンソールログの本質は、
アプリの動きを
人間がリアルタイムで追いかけられるように
シンプルなテキストとして画面に出すこと
です。
押さえておきたいポイントをまとめると、
Console.WriteLine でも、日時とレベルを付けるだけで立派なログになる
色付きログ(ForegroundColor)で重要度を一瞬で見分けられる
ASP.NET Core などでは ILogger と AddConsole を組み合わせるのが王道
小さなツールなら、自前の ConsoleLogger ユーティリティを用意するとコードがすっきりする
コンソールログは「今すぐ見たい」、ファイルログは「後から読み返したい」という役割で使い分ける
ここまでイメージできていれば、
「とりあえず Console.WriteLine」から一歩進んで、
“業務でも使えるコンソールログ”を意識して書けるようになります。
