.NET Core でログを Google Stackdriver に保存するメモ

.NET Core ではロギングに Microsoft.Extensions.Logging を使っていて、 コンソールや EventSource なんかによく出力していたんだけど、 今は Google Cloud Platform で遊んでいるので Stackdriver に保存したくなった。 NuGet 用に公式のパッケージがあるので導入は簡単。

www.nuget.org

名前に AspNetCore とあるが、.NET Core のコンソールアプリケーションでも普通に使えた。

using Google.Cloud.Diagnostics.AspNetCore;
using Microsoft.Extensions.Logging;
using System;
using System.IO;

namespace StackDriverSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Environment.SetEnvironmentVariable(
                "GOOGLE_APPLICATION_CREDENTIALS",
                Path.Combine(AppContext.BaseDirectory, "your-access-key.json"));

            var loggerFactory = new LoggerFactory()
                .AddConsole()
                .AddGoogle("your-project-name");

            var logger = loggerFactory.CreateLogger<Program>();

            logger.LogInformation("Hello, StackDriver!");

            Console.ReadLine();
        }
    }
}

例えば将来 .NET Core + Docker + GKE という構成でアプリケーションを開発することになったら、 ログの保存先は Stackdriver が選択肢の筆頭なので、ブログにメモを残しておく。