dotnet coreでLoggingする
dotnet coreのログ取得方法を勉強する。
やり方は以下の通りとする。
- プロジェクトは前回のをそのまま流用する
- appsettings.jsonにログ設定を記載する
- controllerで出力させる。
デフォルトは「すべてのプロバイダー用」である"LogLevel"で設定すればよいのだが、namespace個別にログレベルを設定する場合は「Debugプロバイダー用」を使う。
{ "TestUpdateData": { "EndPointUrl": "http://localhost:8080", "AuthorizationKey": "12345678" }, // Debug プロバイダー用 "Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "WebApplication4.Controllers": "Debug" } }, // Console プロバイダー用 "Console": { "IncludeScopes": false, "LogLevel": { "Microsoft.AspNetCore.Mvc.Razor.Internal": "Warning", "Microsoft.AspNetCore.Mvc.Razor.Razor": "Debug", "Microsoft.AspNetCore.Mvc.Razor": "Error", "Default": "Information" } }, // すべてのプロバイダー用 "LogLevel": { "Default": "Debug" }, "AllowedHosts": "*" }
2. controllerで出力させる
namespace WebApplication4.Controllers { public class HomeController : Controller { private readonly ILoggerlogger; private readonly AppSettings appSettings; public HomeController(IOptions optionsAccessor, ILogger logger) { this.appSettings = optionsAccessor.Value; this.logger = logger; } public IActionResult Index() { // INFO レベルでログを出力. logger.Log(LogLevel.Information, ("I:TestUpdateData: EndPointUrl : " + this.appSettings.TestUpdateData.EndPointUrl)); logger.Log(LogLevel.Information, ("I:TestUpdateData: AuthorizationKey: " + this.appSettings.TestUpdateData.AuthorizationKey)); logger.Log(LogLevel.Debug, ("D:TestUpdateData: EndPointUrl : " + this.appSettings.TestUpdateData.EndPointUrl)); logger.Log(LogLevel.Debug, ("D:TestUpdateData: AuthorizationKey: " + this.appSettings.TestUpdateData.AuthorizationKey)); logger.LogDebug("--TestUpdateData: EndPointUrl : " + this.appSettings.TestUpdateData.EndPointUrl); logger.LogDebug("--TestUpdateData: AuthorizationKey: " + this.appSettings.TestUpdateData.AuthorizationKey); 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 }); } } }
参考
- .NET Core および ASP.NET Core でのログ記録
- .NET Core 汎用ホスト(GenericHost)ログ出力の構成
- ASP.NET Core のオプション パターン
- ASP.NET Core MVC - Serilogを使ってファイルにログ出力する
コメント
コメントを投稿