フッターコンテンツにスキップ
.NETヘルプ

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

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

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

Serilogの機能を理解する

Serilogは、.NETアプリケーション向けの強力で柔軟なログライブラリです。 ログ体験を向上させ、アプリケーションの動作の診断と分析を容易にするさまざまな機能を提供します。 このセクションでは、Serilogが提供する主な機能のいくつかを探ります。

構造化ログ

Serilogの際立った機能の1つは、構造化ログのサポートです。 単にメッセージをプレーンテキストとして記録するのではなく、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の力を利用してログの能力を高め、アプリケーションの動作に関する貴重な洞察を得ることができます。

構造化ログ: A Core Feature

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を設定します。 この方法は、例えば動的ログレベルやカスタムログシンクなど、より複雑なログシナリオを設定するためによく使用されます。 例えば、特定の間隔または特定のサイズに達したときに新しいログファイルを作成するローリングログファイルを設定し、効率的なログファイル管理を確保することができます。

// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
' Create a logger instance with a rolling log file that creates a new log file every day
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
$vbLabelText   $csharpLabel

ASP.NET Coreとの統合

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

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))

Dim app = builder.Build()
$vbLabelText   $csharpLabel

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

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

ASP.NET CoreアプリケーションでIron Software SuiteとSerilogを統合するには、次の一般的な手順を実行します。

  1. NuGetまたはPackage Manager Consoleを使用して必要なIron Software Suiteパッケージをインストールします。
  2. Serilog.Sinks.FileなどのログファイルやSerilog.Sinks.Consoleなどのコンソール出力用の好みのシンクライブラリを使用してSerilogを設定します。
  3. アプリケーションのコード内でIron Software Suiteライブラリを使用してその機能を活用し、ログプロセスを強化します。 これは、PDFの生成、バーコードの読み取り、またはWebコンテンツのスクレイピングなどのタスクを含む場合があります。

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

IronPDF

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

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

IronOCR

IronOCRは、125の言語で画像をテキストに翻訳できる光学式文字認識(OCR)ライブラリです。 これはテキストデータを画像やスキャンドキュメントから抽出する必要があるログシナリオで利用でき、ログデータにより多くのコンテキスト情報を追加します。

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

IronXL

IronXLは、Office Interopを必要とせずにExcelと連携する機能を提供します。これは特にログ目的に有益であり、ログデータをExcelにエクスポートしてさらなる分析と報告を行い、データの操作と視覚化のための馴染みのあるインターフェイスを提供します。

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

IronBarcode

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

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

結論

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

Iron Software Suiteは、Iron SoftwareのC#ライブラリの無料トライアルを提供しており、開発者がその機能を探求し、ASP.NET Coreアプリケーションを強化する機会を提供します。特に、精緻なログおよびデータ処理機能のためにSerilogと統合した場合に、その機能を探る絶好の機会です。

よくある質問

Serilogは.NETアプリケーションのログ記録をどのように強化しますか?

Serilogは、ログイベントを構造化されたクエリ可能なオブジェクトに変換することで、従来の純テキストログ記録と比べて優れた診断と分析を可能にします。

Serilogを使用した構造化ログの利点は何ですか?

Serilogによる構造化ログは、Elasticsearchのようなツールを用いた分析に役立つログデータの解析とクエリを容易にし、運用インテリジェンスと監視を向上させます。

.NET 6アプリケーションでSerilogをどのように構成できますか?

.NET 6アプリケーションでは、`LoggerConfiguration`クラスや`appsettings.json`のような設定ファイルを使用して、コード変更なしで柔軟なログ記録の動作調整が可能です。

Serilogは異なるログ記録先への統合オプションをどのように提供しますか?

Serilogは異なる宛先にログイベントを送信するためのさまざまなシンクライブラリを提供し、コンソール、テキストファイル、Elasticsearch、Seqなどに送信できます。

Serilogのログ記録でエンリッチャーはどのような役割を果たしますか?

Serilogのエンリッチャーは、タイムスタンプやログレベルなどのコンテキスト情報をログイベントに追加し、特定のアプリケーションデータを含めるためのカスタムエンリッチャーを作成して、ログの情報価値を向上させます。

Serilogは他のライブラリと組み合わせてより高度な機能を提供できますか?

はい、SerilogはIronPDF、IronOCR、IronXLのようなライブラリと組み合わせることで、PDF生成、OCR処理、Excel操作などの機能を提供し、ログ記録プロセスとデータ処理を強化します。

.NETでログデータのPDFレポートを生成するにはどうすればよいですか?

IronPDFのようなライブラリを使用することで、PDFの作成、読み取り、編集が可能になり、ログ記録システムと統合して詳細なログレポートを作成できます。

.NETでの分析のためにログデータをExcelにエクスポートすることは可能ですか?

はい、IronXLのようなライブラリを使用してOffice Interopを必要とせずにExcelファイルを操作することで、ログデータをExcelにエクスポートし、さらに分析と報告を行うことができます。

Iron Softwareのライブラリは、Serilogのようなログ記録システムにどのような利点をもたらしますか?

Iron Softwareのライブラリは、PDF作成、OCR、Excelファイル操作などの追加機能を提供することで、データ処理と報告能力を強化し、.NET環境でのログ記録システムを強化します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。