はじめに
Serilogの設定ファイルを備忘のため残します。
デスクトップアプリケーション向けの設定内容です。
ログレベル別に2種類(全レベル/Warning以上)× 出力形式別に2種類(通常のテキスト形式/JSON形式)
で合計4ファイルを出力する内容となっています。
各設定項目の意味は、コメントとして記載しています。
Nugetパッケージ
インストールしたSerilog関連のNugetパッケージは以下の通りです。
- Serilog
- Serilog.Enrichers.AssemblyName
- Serilog.Enrichers.Environment
- Serilog.Enrichers.Memory
- Serilog.Enrichers.Process
- Serilog.Enrichers.Thread
- Serilog.Exceptions
- Serilog.Filters.Expressions
- 非推奨のパッケージ。.NET Core 以上であれば Serilog.Expressions
- Serilog.Formatting.Compact
- Serilog.Settings.Configuration
- Serilog.Sinks.File
設定ファイル(.json)
{
"Serilog": {
"Using": [ "Serilog.Sinks.File" ], //ファイルに出力
"MinimumLevel": {
//最小ログレベル
"Default": "Verbose"
},
"Enrich": [
//拡張
"WithThreadId", //スレッドID
"WithThreadName", //スレッド名
"WithMachineName", //マシン名
"WithEnvironmentUserName", //ユーザー名
"WithProcessId", //プロセスID
"WithProcessName", //プロセス名
"WithAssemblyName", //アセンブリ名
"WithAssemblyVersion", //アセンブリバージョン
"WithMemoryUsage", //メモリ使用量
"WithExceptionDetails" //例外の詳細情報
],
"WriteTo": [
{
//通常のテキスト形式で、全レベルのログを出力するためのLogger
"Name": "Logger",
"Args": {
"configureLogger": {
"WriteTo": [
{
"Name": "File",
"Args": {
//ログファイルパス
"path": "Logs/All/Default/all.log",
//ログファイルのフォーマット
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} | [{Level:u3}] | {ThreadId:00}:{ThreadName} | {ProcessId:00}:{ProcessName} | {Message:lj} | {AssemblyName} | {AssemblyVersion} | {MachineName} | {EnvironmentUserName} | {MemoryUsage} B | {NewLine}{Exception}",
//1日毎にロールする
"rollingInterval": "Day",
//直近の7ファイルを保持する(デフォルトでは直近の31ファイル)
"retainedFileCountLimit": 7,
//ファイルサイズの制限を削除(デフォルトでは1GB)
"fileSizeLimitBytes": null,
//書き込みをバッファリングする
"buffered": true
}
}
]
}
}
},
{
//JSON形式で、全レベルの構造化ログを出力するためのLogger
"Name": "Logger",
"Args": {
"configureLogger": {
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/All/Compact/all_compact.json",
//JsonFormatter
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"fileSizeLimitBytes": null,
"buffered": true
}
}
]
}
}
},
{
//通常のテキスト形式で、Warning以上のログを出力するためのLogger
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "(@Level = 'Error' or @Level = 'Fatal' or @Level = 'Warning')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/Error/Default/error.log",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} | [{Level:u3}] | {ThreadId:00}:{ThreadName} | {ProcessId:00}:{ProcessName} | {Message:lj} | {AssemblyName} | {AssemblyVersion} | {MachineName} | {EnvironmentUserName} | {MemoryUsage} B | {NewLine}{Exception}",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"fileSizeLimitBytes": null,
"buffered": true
}
}
]
}
}
},
{
//JSON形式で、Warning以上の構造化ログを出力するためのLogger
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "(@Level = 'Error' or @Level = 'Fatal' or @Level = 'Warning')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/Error/Compact/error_compact.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"fileSizeLimitBytes": null,
"buffered": true
}
}
]
}
}
}
]
}
}