我正在使用Serilog来记录asp.net core网站中的日志,并且项目中使用了'class library'。
- 如何在asp.net core类库中实现日志记录?
- 有没有办法在“类库”中独立实现日志记录?
我正在使用Serilog来记录asp.net core网站中的日志,并且项目中使用了'class library'。
简单地说,您只需要将Microsoft.Extensions.Logging
NuGet包添加到您的类库中,然后在您的类中注入ILogger<T>
:
public class MyClass
{
private readonly ILogger _logger;
public MyClass(ILogger<MyClass> logger)
{
_logger = logger;
}
public void DoSomething()
{
_logger.LogInformation("I'm doing something here.");
}
}
ILogger
是一个 门面,是用于日志记录的API,实际上它本身并不做任何日志记录。当您有一个真正的应用程序使用它时,实际的日志记录是通过您插入门面的提供者进行的。这就是像Serilog这样的东西会出现的地方。在您的实际应用程序中,您将配置日志记录以使用Serilog,然后每当任何东西调用ILogger
上的方法时,它都会被代理到您的实际真实日志记录提供程序(Serilog),然后Serilog进行实际的日志记录。
services.AddTransient<IMyClass, MyClass>();
来“激活”此类库的 DI,解决了这个问题。 - AustEcon