はじめに
新しくプロジェクトを作ったときに、Serilogのどのパッケージを入れればよいんだっけ?と他のプロジェクトを参考することが多いので、個人的追加するパッケージの一覧をまとめておきます。
プロジェクトの種類ごとに入れるべきパッケージ
ASP.NET Core以外のプロジェクトの場合はこのあたりですね。
- Serilog.Extensions.Hosting
- Serilog.Settings.Configuration
- Serilog.Sinks.Console
- Serilog.Sinks.Debug
- Serilog.Exceptions
ASP.NET CoreであればSerilog.AspNetCoreが必要なパッケージをだいたい持っているので、下記の2つがあれば事足ります。
- Serilog.AspNetCore
- Serilog.Exceptions
Enricher
LogContextに特定の情報を付与するための拡張です。環境変数やプロセス、スレッド情報などは標準で用意されています。自前でEnricherを作る場合はこちらも参照してください。
ASP.NET Coreの場合はSerilog.AspNetCoreが良い感じに属性を付与してくれるのであまり使わないのですが、コンソールプロジェクトの場合は下記のEnricherも検討したいですね。
パッケージ名 | 概要 | 含まれるEnricer |
---|---|---|
Serilog.Enrichers.Environment | 環境変数のHOSTNAME、USERNAMEなどの情報をログに付与します。 | WithMachineName, WithEnvironmentUserName |
Serilog.Enrichers.Thread | 現在のスレッド情報をログに付与します。 | WithThreadId, WithThreadName |
Serilog.Enrichers.Process | 現在のプロセス情報をログに付与します。 | WithProcessId, WithProcessName |
Sink
ログイベントを指定する拡張です。コンテナ環境であれば単にConsoleに吐き出してコンテナ環境が提供するログドライバーでログを吸い上げればよいと思いますが、フィルターと組み合わせてこのログの場合だけコンソール以外にでフックさせたいといった場合にも利用できます。
パッケージ名 | 概要 |
---|---|
Serilog.Sinks.Console | ログイベントをコンソールに出力するための拡張です。 |
Serilog.Sinks.File | ログイベントをファイルに出力するための拡張です。 |
Serilog.Sinks.Debug | ログイベントをVisual Studioのデバックコンソールに出力するための拡張です。 |
Serilog.Sinks.Trace | ログイベントをSystem.Diagnostics.Traceに出力するための拡張です。 |
Serilog.Sinks.Http | ログイベントを特定のWebサイトにPOSTするための拡張です。 |
Serilog.Sinks.Email | ログイベントを特定のメールアドレスに送信するための拡張です。 |
他にもこんなサービスへのSink用パッケージが公開されています。
- Serilog.Sinks.Elasticsearch
- Serilog.Sinks.Seq
- Serilog.Sinks.ApplicationInsights
- Serilog.Sinks.MSSqlServer
- Serilog.Sinks.Splunk
- Serilog.Sinks.AwsCloudWatch
- Serilog.Sinks.MongoDB
- Serilog.Sinks.Raygun
- Serilog.Sinks.AzureTableStorage
- Sentry.Serilog
- MassTransit.SerilogIntegration
まとめ
ASP.NET Coreであればとりあえずこの2つを入れておけばOK
- Serilog.AspNetCore
- Serilog.Exceptions