c# - 在 dot net core 3.1 中将 NLog 注册为非特定主机的记录器
问题描述
我有非 Web 通用主机应用程序,根据https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1我应该在 .ConfigureLogging 添加记录器但是
- 对我来说,ConfigureLogging 的原型与文档中的原型不同,例如 ILoggingBuilder 没有
.ClearProviders()
- 我不能用于 DI,如此处
.AddNlog()
所示
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog(); // NLog: Setup NLog for Dependency injection
我认为我的困惑是由于没有构建 Web 应用程序造成的,而指南指定为 asp.net 配置 NLog。为什么 NLog 与 Web 应用程序的包不同?这是由 NLog 自动记录由 Kestrel 或其他特定于 Web 的东西发布的事件引起的吗?UseNLog 方法(这是我假设的 NLog 定义的扩展?)和在服务中将 NLog 注册为单例有什么区别
解决方案
AddNLog()
和都是ClearProviders()
扩展方法。您需要添加 using namespace 以及相关的 nuget-packages。
using NLog.Extensions.Logging;
using Microsoft.Extensions.Logging;
并将这些 nuget 包添加到您的项目中:
- https://www.nuget.org/packages/Microsoft.Extensions.Logging
- https://www.nuget.org/packages/NLog.Extensions.Logging
- ASP.NET Core:https ://www.nuget.org/packages/NLog.Web.AspNetCore/(使用 NLog.Web)
还可以找到 wiki 页面和示例:
推荐阅读
- amazon-web-services - aws-cdk 将 Lambda 函数与 CloudFront Web 分配相关联
- c# - 将 Sprite Renderer 宽度设置为特定距离
- .net - AWS 无服务器应用程序 .net 应用程序
- android - 为什么我的 observable 从未在 kotlin android 协程中看到我的列表的更新?
- php - 使用 PHP 将时区字符串转换为 UTC 偏移量
- c# - Xamarin.Forms FontAwesome 不适用于绑定属性
- networking - 对 EUI-64 和以太网帧头的混淆
- jquery - 模态与 Jquery
- bash - 从 bash 脚本运行 `docker run` 失败。命令在命令行上不会失败
- javascript - 如何将 jquery.mmenu 配置为仅显示图标栏