loggerの設定
Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
// デフォルトを上書き
logging.ClearProviders();
logging.AddAzureWebAppDiagnostics();
logging.AddFilter((provider, category, logLevel) =>
{
// フィルタ条件が書ける
return true;
});
})
.ConfigureServices(serviceCollection => serviceCollection
//Blobを使うよ
.Configure<AzureBlobLoggerOptions>(options =>
{
//出力ファイル名 (prefixにGuidが付く)
options.BlobName = "log.txt";
}))
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
App Service側の設定
使用箇所
DIに登録されているので、コンストラクタにILogger<クラス名>でインスタンスが取得できる
public TestController(ILogger<TestController> logger)
{
logger.LogError("エラーメッセージ");
}
Startup.csのConfigureServicesで使いたい場合は以下で取得可能
public void ConfigureServices(IServiceCollection services)
{
var logger = services.BuildServiceProvider().GetRequiredService<ILogger<Startup>>();
}
確認
指定したBlobストレージにログが出力されるかと思います。