はじめに
前回はコンソールアプリケーションでAzure
ストレージを使うことをやった。
今回は、ASP.NET Core
でログを使ってみる。
環境
Windows 11 Professional
Visual Studio 2022 Community
ASP.NET Core 8.0
Program.csでログを使う
Program.cs
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.Logger.LogInformation("test Log");
下記のようにコンソールに出力される。
info: WebApplication2[0]
test Log
Controllerでログを使う
Controllers/HomeController.cs
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using WebApplication2.Models;
namespace WebApplication2.Controllers
{
using Json.Net;
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index");
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
下記のように出力される。HomeController
のIndex
にアクセスする。
info: WebApplication2.Controllers.HomeController[0]
Index
ログレベルの変更
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
appsettings.Development.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
参考
- .NET Core および ASP.NET Core でのログ記録
https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/logging/?view=aspnetcore-8.0
おわりに
ASP.NET
でログを記録する方法を勉強した。
基本的には、DIでlogger
が設定されるので便利。
また、
ログを表示する Console プロバイダーを除き、ログ プロバイダーはログを保存します。 たとえば、Azure Application Insights プロバイダーでは、Azure Application Insights にログが保存されます。 複数のプロバイダーを有効にすることができます。
とのことなので、ログプロパイダーについても今後勉強をする。
Serilog
を使えば、ファイルに保存することもできるようなので、次回以降試してみる。