[C#][ログ] モダンC#の標準!ILogger インターフェースの基本

スポンサーリンク

はじめに

現代の .NET 開発(ASP.NET Core や Worker Service など)では、ログ出力に ILogger インターフェースを使用するのが一般的です。これを使うことで、出力先(コンソール、ファイル、クラウドなど)をコード側で意識せずに、柔軟に切り替えられるようになります。

この記事で学べること

  • ILogger インターフェースの役割

  • ログレベル(Information, Warning, Errorなど)の種類

  • 依存性注入(DI)を使わない、最小構成での ILogger 利用法

サンプルコード

今回は、ライブラリなどを追加せずに LoggerFactory を使って ILogger を生成するシンプルな例を紹介します。

using Microsoft.Extensions.Logging;

// 1. ログの出力先(ファクトリ)を定義
using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole(); // コンソールに出力するように設定
});

// 2. ロガーの作成(クラス名を指定するのが一般的)
ILogger logger = loggerFactory.CreateLogger();

// 3. 様々なログレベルでの出力
logger.LogInformation("アプリケーションが正常に開始されました。");
logger.LogWarning("リソースの消費量が増加しています。");
logger.LogError("データベースへの接続に失敗しました。");

// 構造化ログ(後日詳しく解説するよ)
var userId = "HIRO_001";
logger.LogInformation("ユーザー {UserId} が操作を実行しました。", userId);

 

コード解説

  1. LoggerFactory.Create: ここで「どこに出力するか(Console, Debugなど)」を決定します。

  2. ILogger<T>: どのクラスから出力されたログかを判別するために、ジェネリックでクラス名を渡すのが慣例です。

  3. ログレベル:

    • LogInformation: 通常の動作記録。

    • LogWarning: 異常ではないが注意が必要な状態。

    • LogError: 処理が継続できないような問題が発生した状態。

  4. プレースホルダー: LogInformation("... {UserId}", userId) のように書くと、後で解析しやすい「構造化ログ」として扱われます。

まとめ

ILogger を使う最大のメリットは、「ログの出力方法」と「ログを書くコード」を切り離せること。今回はコンソールに出力しましたが、設定一つでファイルやクラウドに変えられる準備が整ったことになります。

Please follow and like us:

コメント

タイトルとURLをコピーしました