【问题标题】:Where does the log file get written to in .Net Core Logging日志文件在 .Net Core Logging 中的写入位置
【发布时间】:2019-08-22 16:59:31
【问题描述】:

我正在尝试在 .Net Core API 中实现日志记录,但在任何地方都看不到日志文件。

我正在使用 Microsoft.Extensions.Logging;和 ILogger 工厂方法。

在我的 Program.cs 我有...

   var host = new WebHostBuilder()
           .UseApplicationInsights()
           .UseKestrel()
           .UseContentRoot(Directory.GetCurrentDirectory())
           .UseIISIntegration()
           .UseStartup<Startup>()
           .Build();

        host.Run();

在我的 Startup.cs 中,我在 Configure 方法中有这个...

        loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Warning);
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
        loggerFactory.AddEventSourceLogger();

在我的 appsettings.json 我有这个...

  "Logging": {
   "IncludeScopes": false,
  "LogLevel": {
  "Default": "Debug",
  "System": "Information",
  "Microsoft": "Information"
   }
  }

在我的控制器中,我注入记录器并以这种方式调用该方法...

   _logger.LogError("ERROR_MESSAGE_STRING");

正在使用错误字符串调用 LogError 方法,但我没有看到日志。我希望在某处看到日志错误文件。可能在 bin 目录下?

【问题讨论】:

  • 它记录到控制台。这很好,你应该将你的进程标准输出重定向到一个文件。
  • 您没有写入文件。看看你的.Add* 电话
  • 这将在 Azure 服务上。它会重定向到数据块吗?这需要另一个添加吗?
  • 哦,等一下,AddApplicationInsights() 会登录到 Azure 中的那个服务,对吧?
  • 是的。您已经明确声明日志将发送到四个潜在目的地:App Insights、控制台、调试输出和事件查看器。现在,并非所有这些目的地都适用于所有情况。调试仅在调试时适用。控制台仅适用于有一些标准输出的情况。仅当您在 Windows 机器上运行时,事件查看器才适用。因此,App Insights 是唯一有保证的目的地。无论如何,这些都不是基于文件的,所以不知道为什么你会认为在某个地方应该有一个文件。

标签: c# asp.net-core


【解决方案1】:

如果你想登录到一个文件,那么你需要添加一个调用

loggerFactory.AddFile

如果您还没有安装记录到文件的提供程序,那么您需要.. 我没有任何具体建议(“向我推荐一个...询问有关在不使用第三方库的情况下记录到文件的问题 - 例如这里:How to log to a file without using third party logger in .Net Core?

如果您搜索诸如“net core log to file”之类的内容,您无疑也会获得大量的点击率

您告诉 loggerFactory 包含在制造的记录器中的地方目前没有基于文件的接收器。每次您的工厂生产记录仪时,它都会针对以下目标生产记录仪:

loggerFactory.AddApplicationInsights //Microsoft azure cloud application insights service            
loggerFactory.AddConsole //the standard output of the command line
loggerFactory.AddDebug //for example, visual studio debug output window (i think)
loggerFactory.AddEventSourceLogger //for example, the windows performance monitoring system

有关您已配置的日志记录目标以及在何处可以找到其信息的更多信息,请参阅精美手册的此页面:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2#built-in-logging-providers

【讨论】:

  • ILoggerFactory 似乎没有 AddFile()
  • @John 你可以实现一个,接口是pretty easy。或者看看其他人是否已经实现了一个。或者使用 Serilog 或 NLog 等日志库,它们都有文件日志记录。
  • 对不起,刚刚注意到这一点,并在答案中添加了一些内容
【解决方案2】:

只调用 LogError 方法就足够了吧?

.UseApplicationInsights() 调用LogError 就足够了。

我在 Azure 上的 Live Metrics 中看到了异常,但在 AI 应用中没有看到

对于Live Metrics,是实时的,发送请求后可以直接看到Sample Telemetry,对于Application Insights Search的日志,会有一定的深度,可以考虑在大约之后查看日志5 分钟。

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多