【发布时间】: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