web-dev-qa-db-ja.com

ASP.NET CoreロギングAPIはデフォルトのストアログとしてどこにありますか?

ASP.NET Core 2.0では デフォルトのロギングAPI を使用しています。私のアプリはAzure Webアプリとしてホストされています。

私の質問:これらはどこに出力されますか?そして、それをどのように変更しますか?

(今のところ、データベースやファイルシステムでは必要ありません。最近のログを読んでデバッグしてください)。

私がしていること:

私のStartup.csファイルロギングを挿入しました:

private readonly ILogger<Startup> _logger;

public Startup(IConfiguration configuration, ILogger<Startup> logger)
{
    _logger = logger;
    Configuration = configuration;
}

そして、私はそれからいくつか書きます:

_logger.LogInformation("Configure RUNNING");

ただし、FTP/Azureポータル内のログでこれらを見つけることができませんでした。

6
Lars Holdgaard

1時間遊んだ後、それがasn ASP.NET Coreアプリでどのように機能するかを理解しました。

まず、このYouTubeビデオを視聴することをお勧めします: https://www.youtube.com/watch?v=icwD6xkyrsc

それを解決する方法

ステップ1:

Startup.csクラスに移動します。 Configureメソッド内で、次の署名があることを確認してください:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

鉱山にはILoggerFactoryがありませんでした。ただし、これを追加する必要があります。デフォルトでは、ASP.NET Coreによってクラスに挿入されます。

ステップ2:

プロバイダーをセットアップします。

次の2つを設定しました。

loggerFactory.AddDebug();
loggerFactory.AddAzureWebAppDiagnostics();

AddAzureWebAppDiagnosticsは パッケージ から来ています。

ステップ3:

これでロギングを開始できます。

私のHomeControllerの例:

    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        _logger.LogInformation("TEST INDEX LOGGER");
        return View();
    }

ステップ4:ログレベルが期待と一致していることを確認してください

appsettings.jsonを見て、警告レベルが期待と一致していることを確認します。

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information"
    }
  }
}

ステップ5:ログを参照してください

Azureでは、[Diagnostics logs]タブを設定しています。これを設定して、ブロブにログを記録します。

enter image description here

ステップ6:

これで、BLOB内のログファイルをダウンロードして表示できます。

私のHomeControllerからのログを確認できる私のログファイルの例:

2018-03-05 14:15:32.489 +00:00 [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Executed action Likvido.Website.Main.Controllers.HomeController.Index (Likvido.Website.Main) in 1.6257ms
2018-03-05 14:15:32.489 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 2.0892ms 200 text/html; charset=utf-8
2018-03-05 14:15:32.608 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 GET http://www.likvido.dk/js/site.min.js  
2018-03-05 14:15:32.610 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 2.0154ms 302 
2018-03-05 14:15:32.844 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 GET http://likvido.dk/js/site.min.js  
2018-03-05 14:15:32.845 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 0.571ms 404 
2018-03-05 14:15:46.878 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 GET http://www.likvido.dk/  
2018-03-05 14:15:46.878 +00:00 [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Executing action method Likvido.Website.Main.Controllers.HomeController.Index (Likvido.Website.Main) with arguments ((null)) - ModelState is Valid
2018-03-05 14:15:46.878 +00:00 [Information] Likvido.Website.Main.Controllers.HomeController: TEST INDEX LOGGER
2018-03-05 14:15:46.878 +00:00 [Information] Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor: Executing ViewResult, running view at path /Views/Home/Index.cshtml.
2018-03-05 14:15:46.878 +00:00 [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Executed action Likvido.Website.Main.Controllers.HomeController.Index (Likvido.Website.Main) in 0.7351ms
2018-03-05 14:15:46.879 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 0.996ms 200 text/html; charset=utf-8
2018-03-05 14:15:47.518 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 GET http://www.likvido.dk/js/site.min.js  
2018-03-05 14:15:47.520 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 1.6787ms 302 
2018-03-05 14:15:47.617 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 GET http://likvido.dk/js/site.min.js  
2018-03-05 14:15:47.617 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 0.628ms 404 
10
Lars Holdgaard

https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/logging/?tabs=aspnetcore2x で後述するように、プロバイダーを追加する必要があります。

public static void Main(string[] args)
{
    var webHost = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
            config.AddEnvironmentVariables();
        })
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddConsole();
            logging.AddDebug();
        })
        .UseStartup<Startup>()
        .Build();

    webHost.Run();
}

Azureの場合、Azure App Serviceプロバイダーを使用できます( https://www.nuget.org/packages/Microsoft.Extensions.Logging.AzureAppServices

logging.AddAzureWebAppDiagnostics();
2
Ojisah