LoginSignup
0
2

More than 3 years have passed since last update.

ConsoleAppFramework + ZLogger の実装例

Last updated at Posted at 2020-04-28

前回の記事で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楽しそうですし。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2