serilogとは?初心者向けガイド:構造化ログの基本と使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
serilogとは?初心者向けガイド:構造化ログの基本と使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


serilogとは?

serilogは、.NETアプリケーションのログを「構造化」して出力するためのライブラリです。従来のログはテキストの行だけを積み重ねますが、serilogイベントに「プロパティ」を付けられるので、後から検索・分析がしやすくなります。

例えば「誰が」「いつ」「何が起きたのか」を一緒に記録でき、ログデータを分析ツールで見やすくするのに向いています。これにより、バグ探しや運用の監視が効率化されます。

どうして構造化ログが便利なのか

従来のログは長い文字列の羅列になりがちで、特定の条件で絞り込みたいときに苦労します。構造化ログでは「イベント名」「ユーザーID」「エラーコード」などの値を個別の情報として扱えるため、後で絞り込み検索が直感的にできます。

基本の使い方

まず、.NETのプロジェクトに Serilog のパッケージを追加します。Visual Studio なら NuGet パッケージマネージャーから「Serilog」と「Serilog.Sinks.Console」などをインストールします。

次に、アプリの起動時に設定を作成します。例のようにLoggerConfigurationを使い、どこへ出力するかを決めます。コードの例は次のとおりです。

Log.Logger = new LoggerConfiguration().WriteTo.Console().CreateLogger();

その後、ログを書き出すときはLog.InformationLog.Error などのメソッドを使います。以下は分かりやすい例です。 Log.Information('ユーザー {UserId} がログインしました。', userId); この書き方の「{UserId}」はプロパティとして取り出せる情報です。

構造化ログの用語

プロパティ:イベントと一緒に記録するデータ。キーと値の組です。

サイン ログの出力先を指す言葉。公式では Sink と呼ばれ、出力先を増やすときに役立ちます。

出力先(Sink)の例

サプライヤーや運用環境に合わせて複数の出力先を使えます。以下はよく使われる例です。

Sinks説明
Console端末にログを表示します。開発時に便利です。
Fileファイルに追記します。長期的な記録に向いています。
Seq構造化ログをストリームで収集・分析します。開発・運用で人気のスキームです。
Elasticsearch大規模な検索が必要な場合に使われることがあります。

実務では、これらを組み合わせて 安定した監視迅速なトラブル対応 を実現します。

注意点

構造化ログは便利ですが、個人情報や機密情報をそのまま出力しないように気をつけます。設定で不要なプロパティを除外したり、情報のマスキングを行うことが大切です。


serilogの同意語

構造化ログライブラリ
ログエントリをキーと値のペアで記録できる機能を提供するライブラリ。Serilogはこのタイプの代表例です。
.NET向け構造化ログライブラリ
.NETアプリケーションで構造化ログを扱う目的のライブラリ。
.NET用ログライブラリ
.NET環境でのログ出力を支える基本的なライブラリ。
構造化ロギングフレームワーク
構造化データを活用してログを収集・整形・出力する枠組み。
ログ出力ライブラリ
アプリのイベント情報を外部へ出力して記録する機能を提供するライブラリ。
ログ記録ライブラリ
イベント情報を記録して後から分析できる形で保存する機能を持つライブラリ。
構造化データ対応ログフレームワーク
ログを構造化データとして扱い、メタデータ付きで出力する枠組み。
JSONログライブラリ
ログをJSON形式で出力・格納することを想定したライブラリ。
イベントログライブラリ
アプリのイベントを一元的に追跡・記録するためのライブラリ。
ログフォーマット制御ライブラリ
出力ログの形式・構造を細かく設定できる機能を持つライブラリ。
構造化ログ記録ツール
構造化ログを生成・保管するためのツール群の一部。
Serilog
.NET向けの構造化ログライブラリの正式名称。導入することで高度なログ整形が可能。
可観測性向上用ログライブラリ
アプリの挙動を把握しやすくするための、構造化ログを提供するライブラリ。
監視・追跡向けログライブラリ
アプリの監視・デバッグに役立つ、追跡可能なログ機能を提供するライブラリ。

serilogの対義語・反対語

無ログ
ログを全く記録・出力しない状態。Serilogのようなロギング機能を使わない運用のこと。
ログなし
ログの生成先が設定されておらず、実質的にログを残さない状態。
ログ停止
アプリケーション内のログ出力機能を一時的または恒久的に停止している状態。
非構造化ログ
ログデータを構造化フォーマットに整形せず、自由形式のテキストとして記録する状態。
手動ログのみ
自動化されたロギング機能を使わず、開発者が都度手動でログを記述する運用。
ログ抑止
ログの生成・出力を抑制する設定・運用。
ログ収集なし
生成したログを外部の収集・監視サービスへ送らず、ローカルだけで完結する状態。
非構造化出力
構造化されたデータ形式を使わず、自由形式で出力する状態。
ログ出力停止
ログ出力機能を明示的に停止させる設定。
完全停止モード
全てのロギング機能を無効化した状態。

serilogの共起語

Serilog
NET 向けの構造化ログライブラリ。イベントデータをキーと値で整然と記録します。
LoggerConfiguration
ロガーを作成・設定するビルダー。出力先やフォーマットをチェーンで組み立てます。
LogEvent
1つのログエントリ。時刻・レベル・メッセージ・プロパティを含むデータ構造です。
LogContext
現在のスコープに値を追加する文脈。追跡情報の結びつきを強化します。
PropertyEnricher
特定のプロパティをログイベントに付与する Enricher の代表例です。
Enrich
ログイベントを拡張する機能の総称。複数の Enricher を組み合わせて使います。
LogEventProperty
ログイベントに含まれる個別のプロパティ(キーと値)です。
MinimumLevel
記録の最低レベルを設定します。Verbose/Debug/Information/Warning/Error など。
OutputTemplate
ログ出力の書式テンプレート。時間・レベル・メッセージの順序などを定義します。
Sink
ログの出力先を表す総称。
Sinks.Console
コンソール/標準出力へ出力する Sink。
Sinks.File
ファイルへ出力する Sink。長期保存に向きます。
Sinks.Seq
Seq へ送信する Sink。構造化ログの可視化に使われます。
Sinks.Elasticsearch
Elasticsearch へ出力する Sink。検索・分析に適しています。
Sinks.ApplicationInsights
Azure Application Insights へ送信する Sink。
Sinks.MongoDB
MongoDB へ出力する Sink。
Serilog.Formatting.Json.JsonFormatter
JSON 形式で出力するフォーマッターの実装です。
JsonFormatter
JSON 形式の出力を行うフォーマッター。
CompactJsonFormatter
コンパクトな JSON 出力フォーマッター。
SystemTextJsonFormatter
System.Text.Json を用いた JSON フォーマッター。
MessageTemplate
メッセージのプレースホルダを使うテンプレート。
Template
ログフォーマット全般のテンプレート概念。
Destructure
オブジェクトをログに展開して表示するデストラクチャリング機能。
DestructuringPolicy
Destructure の挙動を制御するポリシー。
LoggingLevelSwitch
実行時にログレベルを切り替えるスイッチ
MinimumLevelOverride
特定のカテゴリで最小レベルを上書きする設定。
ILogger
Microsoft.Extensions.Logging の ILogger インターフェース。Serilog で使うことが多い。
ILoggerFactory
ILogger を生成するファクトリ。
ASP.NET Core
ASP.NET Core アプリ内で Serilog を統合するシナリオ。
UseSerilog
アプリ起動時に Serilog を使用する設定を適用する拡張メソッド
Serilog.Extensions.Logging
Serilog と Microsoft.Extensions.Logging の連携を提供するライブラリ。
Serilog.Settings.Configuration
設定ファイルから Serilog の設定を読み込む拡張機能。
AppSettings.json
設定を格納する一般的なファイル。Serilog の設定をここに記述することが多い。
RollingInterval
ファイル Sink のローテーション間隔(日/時など)を設定。
FileSizeLimitBytes
ファイル出力のサイズ上限を設定。
CorrelationId
分散トレーシングで用いられる識別子。ログに含めると追跡が楽になります
EventId
イベントを識別するための ID。
LogEventPropertyValue
ログイベントのプロパティ値の表現。

serilogの関連用語

Serilog
NET向けの構造化ログライブラリ。プログラム内で一貫した形式でログを生成し、さまざまな出力先に送ることができます。
構造化ログ
ログのメッセージだけでなくキーと値のペアを組み合わせて出力する方式。後で検索・分析しやすくなります。
ログイベント
1つの記録として扱われる情報の集まり。タイムスタンプ、レベル、メッセージ、プロパティなどを含みます。
ログレベル
ログの重要度を示す指標。代表的な順は Verbose, Debug, Information, Warning, Error, Fatal です。
メッセージテンプレート
レースホルダを使って動的にメッセージを作る書き方。{Name} のような形式で値を差し込みます。
プロパティ
ログイベントに付与する名前と値のペア。検索や集計の軸になります。
デストラクチャリング
複雑なオブジェクトを分解して出力する方法。オブジェクトの各要素を個別に表示します。
エンリッチャー
ログイベントに追加情報を自動で付与する部品。機械名や環境情報などを付けることが多いです。
エンリッチメント
エンリッチャーで追加された情報のこと。用語としては同義で使われます。
ログコンテキスト
同じ処理の流れで共有したいプロパティをスコープ付きで追加する仕組み。
サンク
ログの出力先を指します。コンソール、ファイル、データベースなどが該当します。
Serilog.Sinks.Console
コンソールへ出力する出力先。開発時のリアルタイム確認に便利です。
Serilog.Sinks.File
ファイルへログを書き出す出力先。後日分析に適しています。
Serilog.Sinks.RollingFile
日付やサイズでファイルを回転させて保存する出力先。長期間のログに適しています。
Serilog.Sinks.Seq
Seq という構造化ログサーバへ送信するための出力先。検索・可視化が容易です。
Serilog.Sinks.Elasticsearch
Elasticsearch へ送信して Kibana などで分析する出力先。
Serilog.Sinks.ApplicationInsights
Azure Application Insights へ送信してアプリケーションの監視・分析に使う出力先。
Serilog.Extensions.Logging
Microsoft.Extensions.Logging との連携を実現する拡張。既存のロガーと統合できます。
Serilog.AspNetCore
ASP.NET Core アプリで Serilog を使うための統合機能。
JsonFormatter
出力をJSON形式で整形するフォーマット
OutputTemplate
Console などの出力で使われる文字列テンプレート。時間やレベルなどを整形します。
MinimumLevel
出力するログの最低レベルを設定します。低いレベルのログを抑制できます。
LevelSwitch
動的に変更可能なログレベルの切替機。実行時に詳細化を変更できます。
Override
特定の名前空間やカテゴリのログレベルを個別に上書きします。
Log.Logger
グローバルな静的ロガー。初期化後に全体で利用されます。
ILogger
Microsoft.Extensions.Logging の基本インタフェース。Serilog ではこれを実装します。
LogContext
処理のスコープ内で共有プロパティを追加する機能。リクエストごとに追加情報を持たせられます。
Enrich.WithMachineName
実行中のマシン名を自動でログに付与します。
Enrich.WithEnvironmentUserName
実行環境のユーザー名を自動でログに付与します。
MessageTemplate
プレースホルダを含むメッセージテンプレートのこと。{Name} のように値を差し込みます。
EventId
イベントの識別子。後でイベントを絞り込むのに便利です。
Exception
例外情報をログに含めることでスタックトレースなどを追跡できます。
StackTrace
例外発生時のスタックトレース。原因の特定に役立ちます。
Timestamp
ログが記録された時刻。時刻情報は分析の基本です。
SelfLog
Serilog 自身のデバッグ情報を出力する仕組み。問題解決時に役立ちます。
Filter
特定の条件に合うログだけを出力するフィルタ機能。ノイズを減らせます。
Serilog.Filters.Expressions
式ベースのフィルタを提供する拡張。条件を直感的に設定できます。
AppSettings.json
設定ファイルの Serilog セクション。アプリ起動時の設定として使います。
WriteTo
出力先の設定項目。どのサンクにどの程度の頻度で書くかを定義します。
Using
追加のアセンブリを先に読み込むための設定。サンクを利用する準備をします。
CloseAndFlush
アプリケーション終了時に未処理のログを書き出して閉じる処理。

serilogのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14216viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2341viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1043viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
873viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
755viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
750viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
648viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
633viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
582viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
532viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
524viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
492viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
485viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
485viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
482viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
382viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
377viws
wi-fiとは?初心者向けにわかりやすく解説する基礎ガイド共起語・同意語・対義語も併せて解説!
370viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
341viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
320viws

新着記事

インターネット・コンピュータの関連記事