こんにちは。ビーグルソフトの真鍋です。
ASP.NET MVC Coreもバージョンが2.1になってちょっと盛り上がってきた感があるようなないような感じですが、いろいろとエコシステムもこなれてきて大分何をするにも困らない状況になってきた感じがします。今回はログの出力でログレベルを出力先ごとに変更するための設定について調べたものを簡単にまとめました。
Serilogでログレベルを変更する
Serilogで指定したログレベルをSkinごとに設定するためには以下の通り、各SkinでrestrictedToMinimumLevel
を指定します。
Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .MinimumLevel.Debug() .WriteTo.Console() .WriteTo.Slack(SlackUrl, restrictedToMinimumLevel: LogEventLevel.Information) .CreateLogger(); Log.Information("GirafaBillBatch start!"); Log.Debug("sample"); Log.Information("GirafaBillBatch end!");
上記の設定の場合には、すべてのSkinでDebugレベル以上の出力を行うように設定しています。その結果、Console SkinについてはDebugレベル以上のログが出力されます。
一方でSlack Skinについては引数でInformationレベル以上の出力を行うように設定しているため、Informationレベル以上のログしか出力されません。
Consoleヘのログ出力
Slackへのログ出力
おわりに
通常のログ出力とは異なり、どうしても通知したいログ、例えばエラーログのみをSlackに通知するということができるのはちょっとしたプログラムでは便利です。ある程度の規模のシステムの場合には監視の仕組みを入れていると思いますが、スクレイピングとか軽量のバッチ処理などは処理結果やエラー時のみSlackで受け取れると便利なことが多いですね。
そういうときに、Skinごと(出力先ごと)にログレベルを変更できるととても便利だなぁと思っていろいろと試してみました。
Adaptive Code ~ C#実践開発手法 第2版 (マイクロソフト関連書)
- 作者: Gary McLean Hall,長沢智治(監訳),クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (1件) を見る