.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のようなシステムにログメッセージが取り込まれる際に特に有益です。(エラスティックサーチ、ログスタッシュ、キバナ)高度な分析のためのスタック。

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

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();
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
VB   C#

ASP.NET Coreとの統合

ASP.NET CoreにSerilogを統合するには、パッケージマネージャーコンソールを通じて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();
Dim builder = WebApplication.CreateBuilder(args)
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))
Dim app = builder.Build()
VB   C#

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(IronOCR) は、高精度の光学文字認識 (Optical Character Recognition, OCR) ライブラリです。以下はその主な機能と利点です。

  • 高精度: IronOCR は、画像やPDFから文字情報を高精度で抽出します。複雑なフォントや手書き文字にも対応しています。
  • 多言語対応: IronOCR は、多数の言語に対応しており、グローバルなプロジェクトに最適です。
  • 簡単な統合: .NET アプリケーションに簡単に統合できるため、開発者の手間を大幅に削減します。
  • 豊富なフォーマットサポート: PDF、TIFF、JPG、PNG など、さまざまなファイル形式をサポートしています。
  • カスタマイズ可能な OCR 設定: パフォーマンスや精度を最適化するために、様々な設定を調整できます。

サポートされている開発プラットフォームには、.NET Framework、.NET Core、Xamarin などがあります。 IronOCR(IronOCR) は、開発者が迅速かつ効率的にOCR機能を統合するための強力なツールです。

さらに詳しい情報やデモ版のダウンロードは、公式ウェブサイト https://ironsoftware.com からご覧いただけます。

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

セリログ .NET(開発者向けの動作): 図2 - IronOCR

IronXL

IronXL は、.NET、Python、および他のプログラミング言語で Excel 形式の読み取り、書き込み、編集を可能にするライブラリです。ユーザーは、Microsoft Excel を使わずに、スプレッドシートをプログラムで管理することができます。主要な機能には、Excel ファイルの作成、既存ファイルの読み込み、セルの書き換え、グリッドデータの操作などが含まれます。データ分析、自動化、レポート生成のために最適なツールです。

IronXL の特長は、使いやすさと柔軟性にあります。どのレベルのプログラマーでも、数行のコードで Excel 操作を実行できます。開発者は、RBGA カラー、フォントスタイル、ボーダースタイルなど、ビジュアル要素のカスタマイズも簡単に行えます。

以下のプラットフォームで使用可能です:

  • IronXL for .NET
  • IronXL for Python

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

セリログ .NET(開発者のための仕組み): 図3 - IronXL

IronBarcode

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

セリログ .NET(開発者向けの仕組み): 図 4 - IronBarcode

結論

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

Iron Softwareスイートは、Iron SoftwareのC#ライブラリの無料トライアルASP.NET Coreアプリケーションの機能を強化するための機能と能力を探る優れた機会を提供し、特に高度なロギングとデータ処理機能のためにSerilogと統合したときに役立ちます。

< 以前
Microsoft Logging C#(開発者向けの仕組み)
次へ >
C# REPL(開発者向けの仕組み)