从 nuget 库中正确记录
Proper logging from a nuget library
我正在开发一个可从 WPF 应用程序和 UWP 应用程序使用的 nuget 库,我想使用 Microsoft.Extensions.Logging.Abstractions
为用户提供一种从他们的应用程序中插入他们选择的记录器的方法(Serilog 、NLog 等。)。因此我从这个开始:
public static partial class FrameworkElementExtensions
{
internal static ILogger _logger;
public static void AttachLogger(ILogger logger) => _logger = logger;
.
.
.
}
在这种情况下,我需要将日志记录添加到基于FrameworkElement 的扩展方法中。我觉得我正在以错误的方式解决这个问题,因为我有一个名为 AttachLogger
的函数来注入记录器,而且我的 ILogger
与类型无关(例如:ILogger<T>
)因为我处于静态 class.
有人能指出我正确的方向吗?谢谢!
除了使用专用方法(在您的情况下为 AttachLogger
)之外,我没有看到更好的方法来 "inject" 依赖静态 class 和 Microsoft.Extensions.Logging.Abstractions
。
关于通用 Logger<T>
,您可以注入 ILoggerFactory
并创建与您的 class
关联的记录器
public static void AttachLogger(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger(nameof(FrameworkElementExtensions));
}
我正在开发一个可从 WPF 应用程序和 UWP 应用程序使用的 nuget 库,我想使用 Microsoft.Extensions.Logging.Abstractions
为用户提供一种从他们的应用程序中插入他们选择的记录器的方法(Serilog 、NLog 等。)。因此我从这个开始:
public static partial class FrameworkElementExtensions
{
internal static ILogger _logger;
public static void AttachLogger(ILogger logger) => _logger = logger;
.
.
.
}
在这种情况下,我需要将日志记录添加到基于FrameworkElement 的扩展方法中。我觉得我正在以错误的方式解决这个问题,因为我有一个名为 AttachLogger
的函数来注入记录器,而且我的 ILogger
与类型无关(例如:ILogger<T>
)因为我处于静态 class.
有人能指出我正确的方向吗?谢谢!
除了使用专用方法(在您的情况下为 AttachLogger
)之外,我没有看到更好的方法来 "inject" 依赖静态 class 和 Microsoft.Extensions.Logging.Abstractions
。
关于通用 Logger<T>
,您可以注入 ILoggerFactory
并创建与您的 class
public static void AttachLogger(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger(nameof(FrameworkElementExtensions));
}