我创建了一个新的 .net core 2.1 web 应用程序并部署到 Azure 和 Log Stream 以及应用程序日志记录到 Blob 存储似乎不尊重我的日志记录配置。
我在 Visual Studio 2019 中为 .net core 2.1 Web 应用程序创建了一个带有新项目的新解决方案。在 home Controller Index 路由中,我们添加了一行日志,一些信息如下所示:
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("=========================================");
_logger.LogError("=========================================");
return View();
}
在
appsettings.Development.json
中,我们将 System 和 Microsoft 的 LogLevel
设置为“错误”。我期望 Azure 中的行为与本地运行时的行为相同。在本地访问索引路由并将系统和 Microsoft 的 appsettings.Development.json LogLevel 设置为“信息”时,我们在调试输出窗口中看到此输出:
当 System 和 Microsoft 设置为“错误”时:
我们希望这种情况成为我们的 LogStream 和 Logs 的输出。我们基本上不希望日志中包含 EfCore 和其他 Microsoft 相关信息,除非其 LogLevel 为“错误”。但是我们希望记录“信息”级别的日志。
发布到 Azure 并将 ASPNETCORE_ENVIRONMENT 设置为 development 以使用相同的 Appsettings 设置后。调用索引后,日志的日志流和 blob 如下所示:
这是我的 appsettings.development.json 文件:
这是我的 appsettings.json 文件:
Azure Web 应用程序中设置的环境变量:
ASPNETCORE_ENVIRONMENT = Development
Program.cs 和 Startup.cs 未从项目模板中修改。
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
为什么我的日志级别没有得到尊重?
最佳答案
终于能够通过将这些设置放在我的 appsettings.development.json 文件中使其工作:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Information",
"System": "Error",
"Microsoft": "Error"
},
"AzureAppServicesBlob": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"System": "Error"
}
},
"AzureAppServicesFile": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"System": "Error"
}
}
}
}
关于c# - Appsettings Json 中的 ILoggingBuilder 日志记录 LogLevel 在 Azure 日志流或 Blob 日志中似乎未得到确认,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56190165/