前回の記事でConsoleAppFrameworkのサンプル作りましたが、
ロガーは既存のプログラムからの移行の関係でSerilogでした。
でもロガーとしてはZLoggerがあります。
とりあえず動作してみましたというだけのサンプルになります。
(残念ながら現在、構造化ログを扱える環境がないので、
構造化ログに移行するなら環境整えるところからスタートです)
(余談:既存のSerilogで貯めこんだログはありますが、あまり活用できてません。
Slack投稿や、特に見たいデータについては、別に集計プログラム作って対応なので手間かかってますw
構造化ログに移行して、かっこいいグラフとかで見てみたいですね)
Program.cs (全文)
using System;
using System.Threading.Tasks;
using ConsoleAppFramework;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ZLogger;
namespace MyConsoleApp {
class Program {
static async Task Main(string[] args) {
await CreateHostBuilder(args).RunConsoleAppFrameworkAsync(args);
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging => {
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Debug);
logging.AddZLoggerConsole(options => {
options.EnableStructuredLogging = true;
});
logging.AddZLoggerRollingFile((dt, x) =>
$"logs/{dt.ToLocalTime():yyyy-MM-dd}_{x:000}.log",
x => x.ToLocalTime().Date,
1024,
options => {
options.EnableStructuredLogging = true;
});
})
.ConfigureServices((hostContext, services) => {
services.Configure<Settings>(
hostContext.Configuration.GetSection("Settings"));
});
}
}
ConsoleAppBaseは変更なしのため省略します。
前回の記事を参照ください
ログ設定を書き換えただけなので簡単です。内容はサンプルそのままです。
作成されるログは構造化ログを指定したので以下の通り。(起動ログだけですが)
{"CategoryName":"Microsoft.Extensions.Hosting.Internal.Host","LogLevel":"Debug","EventId":1,"EventIdName":null,"Timestamp":"2020-04-28T11:47:08.9890315+00:00","Exception":null,"Message":"Hosting starting","Payload":null}
{"CategoryName":"Microsoft.Extensions.Hosting.Internal.Host","LogLevel":"Debug","EventId":2,"EventIdName":null,"Timestamp":"2020-04-28T11:47:08.9950747+00:00","Exception":null,"Message":"Hosting started","Payload":null}
{"CategoryName":"Microsoft.Extensions.Hosting.Internal.Host","LogLevel":"Debug","EventId":3,"EventIdName":null,"Timestamp":"2020-04-28T11:47:09.001556+00:00","Exception":null,"Message":"Hosting stopping","Payload":null}
{"CategoryName":"Microsoft.Extensions.Hosting.Internal.Host","LogLevel":"Debug","EventId":4,"EventIdName":null,"Timestamp":"2020-04-28T11:47:09.0026856+00:00","Exception":null,"Message":"Hosting stopped","Payload":null}
このご時世なので、家で構造化ログを調べようかと。DataDog楽しそうですし。