dotnet coreでLoggingする

dotnet coreのログ取得方法を勉強する。
やり方は以下の通りとする。
  • プロジェクトは前回のをそのまま流用する
  • appsettings.jsonにログ設定を記載する
  • controllerで出力させる。
1. appsettings.jsonの修正
デフォルトは「すべてのプロバイダー用」である"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 ILogger logger;
        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 });
        }
    }
}

参考

コメント

このブログの人気の投稿

ソリューション構成ごとにconfigファイルを作成する

C++の古いプロジェクトのビルドでerror MIDL2311 : statements outside library block are illegal in mktyplib compatability mode

web.config debug/releaseの内容を変換構文を使って切り替える