.NET Core日志记录中,日志文件写入到哪里?

5

我正在尝试在一个.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目录中?


它记录到控制台。这很好,你应该将进程的标准输出重定向到文件。 - Jazzwave06
1
你没有写入文件。看看你的.Add*调用。 - Daniel A. White
这将在Azure服务上运行。它是否会重定向到数据Blob?这是否需要另一个添加? - John
1
等一下,AddApplicationInsights() 会将日志记录到 Azure 中的那个服务中,对吧? - John
1
是的。您已经声明日志将转到四个潜在目的地:应用洞察、控制台、调试输出和事件查看器。现在,这些目的地并非在所有情况下都相关。调试仅适用于调试时。如果有一些标准输出,控制台才适用。只有在运行Windows操作系统时,事件查看器才适用。因此,应用洞察是唯一的保证目的地。无论如何,这些目的地都不是基于文件的,因此不确定为什么会认为应该有一个文件存在。 - Chris Pratt
AI应该足够了!但是目前我没有看到我故意引发的异常来测试AI日志。只需要调用LogError方法就足够了,对吗?我在Azure Live Metrics中看到了异常,但在AI应用程序中却没有。 - John
2个回答

4
如果您想记录到文件中,那么您需要添加一个调用:

loggerFactory.AddFile

如果您还没有安装一个记录日志到文件的提供程序,那么您将需要...我没有具体的推荐(“推荐我一个库…”对于SO来说不是主题),但人们确实会询问如何在不使用第三方库的情况下记录到文件,例如这里:如何在.Net Core中不使用第三方记录器记录到文件? 如果搜索类似于“net core log to file”的东西,您还将找到大量的结果。
您告诉loggerFactory包含制造的记录器的位置目前没有基于文件的sink。每次您的工厂制造一个记录器时,它会生成一个针对这些目标的记录器:
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://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2#built-in-logging-providers


1
ILoggerFactory似乎没有AddFile()方法。 - John
@John 你可以自己实现一个,接口很简单。或者看看有没有其他人已经实现了。或者使用像Serilog或NLog这样的日志库,它们都支持文件日志记录。 - mason
抱歉,刚才注意到这一点并添加了一些内容以涵盖它。 - Caius Jard

-2
只是调用LogError方法就足够了,对吧?
使用.UseApplicationInsights()调用LogError就足够了。
我在Azure的实时指标中看到异常,但在AI应用程序中没有看到。
对于Live Metrics,它是实时的,您可以在发送请求后直接查看样本遥测。但是对于Application Insights Search中的日志,会有一些延迟,您可能需要在大约5分钟后检查日志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接