カテゴリ: C# 更新日: 2026/01/11

C#の例外ログ出力のベストプラクティスを徹底解説!初心者でもわかるSerilogの使い方

C#の例外ログ出力のベストプラクティス(Serilogなど)
C#の例外ログ出力のベストプラクティス(Serilogなど)

先生と生徒の会話形式で理解しよう

生徒

「プログラムを作っていてエラーが出たとき、どうやって記録すればいいんですか?」

先生

「それはとても大事な考え方ですね。C#では『ログ出力』という仕組みを使って、エラーや動作の記録を残すことができます。」

生徒

「ログ出力って難しそうですが、初心者でもできますか?」

先生

「大丈夫ですよ。特にSerilogというライブラリを使うと、簡単に例外ログを残すことができます。今日はその基本とベストプラクティスを解説します。」

1. 例外ログ出力とは?

1. 例外ログ出力とは?
1. 例外ログ出力とは?

C#でプログラムを動かしていると、思わぬエラーが発生することがあります。例えば、ファイルが見つからなかったり、インターネットに接続できなかったりする場合です。こうしたエラーを記録する仕組みがログ出力です。

ログは、プログラムの「日記」のようなものです。いつ、どこで、どんなエラーが発生したかを書き残しておくことで、後から問題を分析したり、バグを修正したりできます。

2. Serilogとは?

2. Serilogとは?
2. Serilogとは?

Serilog(セリログ)は、C#で使われる人気のログ出力ライブラリです。標準のConsole.WriteLineで出力するよりも便利で、ログをファイル・データベース・クラウドなど、さまざまな場所に保存できます。

初心者でも簡単に使えるように設計されており、プログラムに数行追加するだけで、見やすいログを残すことができます。

3. Serilogの基本的な使い方

3. Serilogの基本的な使い方
3. Serilogの基本的な使い方

まずは最もシンプルな使い方を見てみましょう。例外処理と組み合わせることで、エラーが発生したときに自動的にログを残せます。


using Serilog;

class Program
{
    static void Main()
    {
        // Serilogの設定
        Log.Logger = new LoggerConfiguration()
            .WriteTo.Console()
            .WriteTo.File("log.txt")
            .CreateLogger();

        try
        {
            int x = 10;
            int y = 0;
            int result = x / y; // ゼロ除算エラー
        }
        catch (Exception ex)
        {
            Log.Error(ex, "エラーが発生しました。");
        }
    }
}

[Error] エラーが発生しました。
System.DivideByZeroException: ゼロで割ることはできません。

このように、エラーの内容をログに残すことができるので、後から問題を再現しやすくなります。

4. ログ出力のベストプラクティス

4. ログ出力のベストプラクティス
4. ログ出力のベストプラクティス

C#で例外ログを出力するときには、次のポイントを意識すると良いです。

  • 例外情報を必ず記録する:エラーメッセージだけでなく、スタックトレース(どこでエラーが起きたかの履歴)も保存する。
  • ログの保存先を分ける:画面には概要、ファイルには詳細、というように複数の出力先を活用する。
  • ログのレベルを使い分ける:情報(Information)、警告(Warning)、エラー(Error)などを使って重要度を分ける。
  • ファイルのローテーション:ログファイルが無限に大きくならないように、日付ごとに分けて保存する。

5. ログレベルの具体例

5. ログレベルの具体例
5. ログレベルの具体例

Serilogではログを種類ごとに出し分けることができます。例えば次のように書きます。


Log.Information("アプリケーションが開始しました。");
Log.Warning("ディスクの空き容量が少なくなっています。");
Log.Error("重大なエラーが発生しました。");

[Information] アプリケーションが開始しました。
[Warning] ディスクの空き容量が少なくなっています。
[Error] 重大なエラーが発生しました。

こうしてログの種類を分けることで、後から必要な情報を効率的に探すことができます。

6. 実務で役立つSerilogの応用

6. 実務で役立つSerilogの応用
6. 実務で役立つSerilogの応用

実際の開発現場では、ログを単にコンソールやファイルに出すだけではなく、クラウドサービスやデータベースに保存することがあります。例えば、サーバーで動かしているアプリケーションでは、複数の利用者からのアクセスを監視するために、ログを集中管理することが必要です。

Serilogは、Elasticsearch・SQL Server・Azure Application Insightsなど多くのサービスと連携できるので、将来的に大規模なシステムを作るときにも安心です。

まとめ

まとめ
まとめ

C#でアプリケーションを開発する際、エラー処理は避けて通れない重要なポイントです。特に実務では、ユーザーに影響を与えるバグや障害の発生を迅速に把握し、対応することが求められます。そのためには、エラー発生時の状況を記録しておく例外ログ出力が不可欠です。

今回紹介したSerilogは、初心者にも扱いやすく、それでいて高機能なログライブラリです。標準の出力機能よりも柔軟で、ログのレベル分け・出力先の切り替え・ファイルのローテーションなど、実務に直結する多くの便利な機能を提供しています。

特にtry-catchブロックとLog.Errorの組み合わせにより、エラーが起きた瞬間の状況を詳細に残すことが可能になります。これはトラブル発生時の原因究明や再発防止に大きな力を発揮します。また、InformationWarningといったログレベルを使い分けることで、日常的な動作記録から重要な警告・エラーまでを整理して記録できます。

以下は、ログレベルを適切に使い分ける実例です。


// Serilogのログレベルの使い分け例
Log.Information("システム起動処理を開始しました。");
Log.Warning("設定ファイルが見つかりません。デフォルトを使用します。");
Log.Error("データベースへの接続に失敗しました。");

[Information] システム起動処理を開始しました。
[Warning] 設定ファイルが見つかりません。デフォルトを使用します。
[Error] データベースへの接続に失敗しました。

また、ログの出力先を柔軟に変更できる点も魅力のひとつです。開発中はコンソールに、運用環境ではファイルやクラウドサービスに、と状況に応じた出力先の選択が可能です。次のように設定を少し変更するだけで、ファイル保存に加えてクラウド送信やDB保存も行えます。


// ファイルとコンソールにログを出力
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)
    .CreateLogger();

上記のようにrollingIntervalを指定することで、日付ごとのログファイル管理が自動化され、長期運用時にもログが膨大になりすぎないよう工夫できます。これは実務では非常に重要な設計ポイントです。

さらに、Serilogは将来の拡張性にも優れており、ElasticsearchやAzureなど、モダンな監視ツールとの統合もスムーズに行えます。プロジェクトの規模や要件に応じて柔軟に活用できる点は、まさに現場向きのログライブラリと言えるでしょう。

このようにSerilogを活用することで、単なるエラー記録にとどまらず、システムの健全性の把握や問題解決スピードの向上にも大きく貢献できます。初心者のうちからしっかりとしたログ出力の習慣を身につけておくことで、信頼性の高いアプリケーション開発が可能になります。

先生と生徒の振り返り会話

生徒

「ログ出力って、単に画面に表示するだけだと思っていました。でも、ファイルに保存したり、レベル分けしたりできるんですね!」

先生

「そうです。特にSerilogを使えば、複数の出力先に分けて記録できるので、運用中の問題にも素早く対応できますよ。」

生徒

Log.Errorで例外の詳細も記録できるので、バグの原因も特定しやすくなりますね。」

先生

「その通りです。ログはプログラムの目と耳です。しっかり設計しておけば、見えない問題も浮かび上がってきますよ。」

生徒

「これからは例外処理とログ出力をセットで考えていきます。ありがとうございました!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

C#の例外ログ出力とは何ですか?初心者にも分かりやすく説明できますか?

C#の例外ログ出力とは、プログラムでエラーが起きたときに、その内容や発生場所を記録する仕組みのことです。ログを記録することで、後から問題の原因を見つけやすくなり、バグ修正がスムーズになります。
カテゴリの一覧へ
新着記事
New1
C#
C#でループの中に条件分岐を書く方法!入れ子制御構造の基本
New2
C#
C#のthrow文の基本!例外を自分で発生させる方法
New3
C#
C#のADO.NETの基礎!SqlConnectionとSqlCommandの使い方を初心者向けに徹底解説
New4
C#
C#の例外クラス階層を理解しよう!Exception・SystemExceptionの基本をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.3
Java&Spring記事人気No3
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.4
Java&Spring記事人気No4
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.5
Java&Spring記事人気No5
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.6
Java&Spring記事人気No6
COBOL
COBOLの帳票レイアウトを美しく!可読性向上テクニックを徹底解説
No.7
Java&Spring記事人気No7
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.8
Java&Spring記事人気No8
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説