.NET ヘルプ

Serilog .NET (開発者向けの仕組み)

チペゴ
チペゴ・カリンダ
2024年1月27日
共有:

.NETアプリケーションにおけるSerilogロガーの設定および構造化診断ログの動作設定の紹介

.NET Core では、効率的な構造化 Serilog ログ設定が、アプリケーションの動作やログ イベントを診断し理解する上で非常に重要です。 さまざまなロギングライブラリの中でも、Serilogはその強力な構造化ロギングメッセージ機能で際立っています。 従来のログ記録とは異なり、構造化されたログ記録はログレベルのメッセージを構造化されたデータとしてフォーマットし、分析やクエリをより簡単にします。 この記事では、Serilogが.NET 6アプリケーションにおけるロギングプロセスをどのように向上させ、各ログイベントが単なる文字列ではなく、構造化され、クエリ可能なオブジェクトであることを保証するかを探ります。 このアプローチはログメッセージを戦略的資産へと変え、より効果的な監視と分析を可能にします。

Serilogの機能を理解する

Serilogは、.NETアプリケーション向けの強力で柔軟なログ管理ライブラリです。 それは、ロギングの経験を向上させ、アプリケーションの動作を診断および分析しやすくするさまざまな機能を提供します。 このセクションでは、Serilogが提供する主要な機能のいくつかを探ります。

構造化ログ記録

Serilogの際立った特徴の一つは、構造化ロギングのサポートです。 単なるプレーンテキストとしてメッセージを記録する代わりに、Serilogは構造化データとしてログを記録することができます。 この構造化データは、JSONオブジェクト、辞書、またはシリアライズ可能な任意の他のタイプである場合があります。 構造化データをログに記録することで、ElasticsearchやSplunkのようなツールを使用してログイベントを簡単に分析およびクエリすることができます。

柔軟な構成

Serilog は、アプリケーションのニーズに応じてロギングの動作をカスタマイズできる柔軟な設定オプションを提供します。 Serilogをプログラムによって、または設定ファイルを使用して構成することができます。 この柔軟性により、アプリケーションを再起動せずにランタイムでログの動作を調整することができます。

シンクライブラリ

Serilogは、ログイベントをさまざまな宛先に送信するためのさまざまなシンクライブラリを提供しています。 一般的なシンクライブラリには次のものが含まれます:

  • Serilog.Sinks.Console:ログイベントをコンソールに送信します。
  • Serilog.Sinks.File: ログイベントをテキストファイルに書き込みます。
  • Serilog.Sinks.Seq:ログイベントを構造化ログサーバーであるSeqに送信します。
  • Serilog.Sinks.Elasticsearch:ログイベントをElasticsearchに送信します。

    これらのシンクライブラリは、Serilogをさまざまなロギングインフラストラクチャやツールと統合することを容易にします。

ログの充実

ログ拡張は、ログイベントに追加の文脈情報を追加できる機能です。 Serilogは、タイムスタンプ、スレッドID、またはログレベルなどの情報を自動的にログイベントに追加できるさまざまなエンリッチャーを提供します。 アプリケーション固有の情報を追加するために、カスタムエンリッチャーを作成することもできます。

ログフィルタリング

Serilogは、さまざまな基準に基づいてログイベントをフィルタリングすることができます。 ログイベントをログレベルやプロパティ値、またはその他の条件に基づいて除外または含めるためのフィルターを構成できます。 このフィルタリング機能により、分析やトラブルシューティングに最も関連性の高いログイベントに集中することができます。

これらの機能を理解し活用することで、Serilogの力を引き出しログ機能を強化し、アプリケーションの動作に関する貴重な洞察を得ることができます。

構造化ロギング: コア機能

Serilogの主な強みは、ログメッセージを構造化データに変換することにあります。 他のプレーンテキストを出力するログライブラリとは異なり、Serilogは構造化されたJSON形式でログを生成し、ログデータの解析やクエリを簡素化します。 この機能は、ログ分析とモニタリングが運用インテリジェンスに不可欠な現代のアプリケーションにとって重要です。 構造化ログは、ログメッセージが高度な分析のためにELK(Elasticsearch, Logstash, Kibana)スタックのようなシステムに取り込まれる場合に特に有益です。

リッチログイベントの詳細

Serilogはコンテキスト情報でログイベントを強化し、アプリケーション内部で何が起こっているかを包括的に把握できるようにします。 各ログイベントには、単純なログメッセージを超えた多くの詳細を含めることができ、タイムスタンプ、ログレベル、例外の詳細、およびカスタムプロパティを含むことができます。 これは、Serilogを他のログ記録ライブラリと比較して、ログの深さと明瞭さの点で優れているものにし、開発者にアプリケーションの挙動やパフォーマンスについての重要な洞察を提供します。

ASP.NET CoreでSerilogを実装する

.NET 6 ASP.NET Core アプリケーションに Serilog を統合するには、まず appsettings.json ファイルまたは Serilog 設定セクションで Serilog を設定します。 この構成は、ログデータがどのように、どこで、そして何がキャプチャされるかを決定します。

設定ファイル経由

設定 JSON ファイルを使用して、ログレベル、出力先(ログファイルやコンソールなど)、およびログ出力形式を定義します。 設定ファイルのアプローチは、コードを変更することなくロギングの動作を変更する柔軟性を提供します。 これは、appsettings.json ファイルで設定を指定することによって行われます。これにより、ログの出力をコンソール、ファイル、さらにはクラウドベースのログ管理サービスなど、さまざまな出力先に指示できます。

プログラムでコード内に

または、LoggerConfiguration クラスを使用して、コード内で直接Serilogを構成します。 このメソッドは、動的なログレベルやカスタムログシンクなど、より複雑なログシナリオを設定するためによく使用されます。 たとえば、特定の間隔で新しいログファイルを作成したり、特定のサイズに達した時点で新しいログファイルを作成するローテーションログファイルを設定することで、効率的なログファイル管理を確保できます。

var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

ASP.NET Coreとの統合

ASP.NET CoreにSerilogを統合するには、Package Manager Consoleを通じてSerilogパッケージを追加し、Program.csファイルでロガーを設定します。.NET 6のvar builderおよびvar app文は、Serilogをアプリケーションのロギングインフラストラクチャにシームレスに接続します。 このプロセスはデフォルトのロガーをSerilogに置き換え、すべてのログメッセージがSerilogパイプラインを通じて処理されることを保証します。

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));
var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));
var app = builder.Build();

ASP.NET CoreでIron Software SuiteをSerilogと統合する

‌‌Iron Software Suite は、Serilog を使用して .NET 6 アプリケーション内のロギング機能を大幅に向上させることができる C# ライブラリのコレクションを提供します。 このスイートには、IronPDF、IronOCR、IronXL、IronZip、IronQR、IronBarcode、およびIronWebScraperのようなさまざまなツールが含まれており、それぞれがユニークな機能を提供します。これらのツールをASP.NET Coreアプリケーションに統合することで、ロギングやデータ処理能力を強化できます。

Iron Software SuiteをASP.NET CoreアプリケーションでSerilogと統合するには、以下の一般的な手順に従ってください:

  1. NuGet またはパッケージ マネージャー コンソールを使用して、必要な Iron Software Suite パッケージをインストールします。
  2. 望んでいるシンクライブラリを使用してSerilogを構成します。例えば、ログファイルのためにSerilog.Sinks.Fileやコンソール出力のためにSerilog.Sinks.Consoleを使用します。
  3. あなたのアプリケーションコード内でIron Software Suiteライブラリを使用し、その機能を活用してログプロセスを強化しましょう。 これは、PDFの生成やバーコードの読み取り、ウェブコンテンツのスクレイピングなどのタスクを含む場合があります。

    Iron SoftwareスイートをSerilogと統合することにより、ASP.NET Coreアプリケーションのロギング機能を拡張し、これらのライブラリが提供する追加の機能を活用することができます。

IronPDF

IronPDF は .NET アプリケーション内で PDF の作成、読み取り、および編集を可能にします。 これは特にSerilogと組み合わせて使用する場合に役立ちます。ログデータのPDFレポートを生成することで、ログ情報を標準化された形式で簡単に配布および閲覧できるようになります。

Serilog .NET(開発者向けの仕組み):図1 - IronPDF

IronOCR

IronOCRは、127言語で画像をテキストに変換できる光学文字認識(OCR)ライブラリです。 この機能は、画像やスキャンされたドキュメントからテキストデータを抽出し、ログデータにさらなる文脈情報を付加するために、ログシナリオで活用することができます。

Serilog .NET(開発者向け: 動作概要): 図 2 - IronOCR

IronXL

IronXLは、Office Interopを必要とせずにExcelと連携する機能を提供します。これは特にログ用途に有益です。ログデータをExcelにエクスポートしてさらに分析やレポートを行うことができ、データ操作や可視化のための使い慣れたインターフェースを提供します。

Serilog .NET(開発者にとっての仕組み):図3 - IronXL

IronBarcode

IronBarcodeは、QRコードおよびバーコードの読み取りと書き込みを容易にします。 このライブラリは、ログファイル内に符号化された情報を埋め込んだり抽出したりすることができ、ログ情報のセキュリティと追跡可能性を向上させます。

Serilog .NET(開発者にとっての仕組み):図4 - IronBarcode

結論

Iron Software SuiteをASP.NET CoreアプリケーションでSerilogと統合することにより、ログ処理が充実するだけでなく、ログデータの取り扱い、提示、分析において多様性が加わります。 それがPDFレポートの生成、画像ベースのログの処理、Excelデータの処理、ログファイルサイズの管理、ログ情報のセキュリティ保護、あるいはWebコンテンツのスクレイピングであれ、SerilogとIron Software Suiteの組み合わせは、.NET 6環境における高度なロギングおよびデータ処理のための無限の可能性を開きます。

Iron Software Suite は、Iron Software の C# ライブラリの無料試用版 を提供しており、特に高度なロギングおよびデータ処理機能のために Serilog と統合された場合に、ASP.NET Core アプリケーションを強化する機能と特長を開発者が探索するための優れた機会を提供します。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
Microsoft Logging C#(開発者向けの仕組み)
次へ >
C# REPL(開発者向けの仕組み)