我想支持登录将由.NET Core Console或Web Client使用的 .NETStandard 项目。但是,我不想假设客户端在我想要记录的类的构造函数中使用了一个需要ILogger依赖的构造函数。
如果记录器不存在,我基本上不想因此而失败。
所以我的问题是如何在我的代码中引用ILogger而不将其传递给构造函数?
using Microsoft.Extensions.Logging;
namespace MyApp
{
public class MyClass
{
//slf4net logger implementation
private static readonly slf4net.ILogger _slf4netLogger = slf4net.LoggerFactory.GetLogger(typeof(MyClass));
//Microsoft.Extensions.Logging???
private static readonly ILogger<MyClass> _logger = ???
public MyClass()
{
//Constructor empty
}
public void MyMethod()
{
//slf4net logger works like this
_slf4netLogger.Trace("This got logged");
//this won't work because the logger was never passed from the constructor
_logger.LogInformation("A message for the log if one is listening");
}
}
}
似乎我并不孤单在这里沮丧
访问MVC控制器之外的日志记录API
好的,这就是新的日志记录API很快成为噩梦的地方。 - https://stackify.com/net-core-loggerfactory-use-correctly/