我可以找到的关于在ASP .NET核心Web应用程序中使用Serilog的所有示例都使用微软的ILogger<T>接口,而不是使用Serilog的ILogger接口。
如何使它能够通过构造函数注入Serilog的ILogger呢?
using Serilog;
public class HomeController : Controller
{
ILogger logger;
public HomeController(ILogger logger)
{
this.logger = logger;
}
public IActionResult Index()
{
this.logger.Information("Index was called");
return View();
}
}发布于 2019-07-31 06:17:33
如果您喜欢ILogger而不是ILogger<HomeController>,您可以尝试注册ILogger。
下面是两个使用Serialog.Information的选项。
Log.Logger
Log.Logger.Information(“Log.Logger的信息日志”);ILogger
//Startup.cs services.AddSingleton(Log.Logger);//使用公共类HomeController :控制器{私有只读ILogger _logger;公共HomeController(ILogger记录器){ _logger =记录器;}公共IActionResult索引(){_logger.Information(“通知来自ILogger的信息”);返回视图();}}发布于 2019-07-31 07:03:14
您可以在Microsoft框架下安装Serilog作为记录器,方法是包含Serilog.Extensions.Logging包,并在应用程序启动中包括以下内容:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(x =>
{
x.ClearProviders();
x.AddSerilog(dispose: true);
});
...或者,作为注入的替代方法,如果您只想引用Serilog记录器,Serilog.Log有一个静态方法Log来创建一个记录器.
...
using Serilog;
...
namespace Test.Controllers
{
public class TestController : Controller
{
private readonly static ILogger log = Log.ForContext(typeof(TestController));
public TestController()
{
log.Debug("Test");
}https://stackoverflow.com/questions/57272654
复制相似问题