在 ASP .NET Core Web API Controller 中注入 Serilog 的 ILogger 接口
Inject Serilog's ILogger interface in ASP .NET Core Web API Controller
我能找到的关于在 ASP .NET Core Web 应用程序中使用 Serilog 的所有示例都使用 Microsoft 的 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();
}
}
如果您更喜欢 ILogger
而不是 ILogger<HomeController>
,您可以尝试注册 ILogger
。
这里有两个选项可以使用 Serialog.Information
。
使用Log.Logger
Log.Logger.Information("Information Log from Log.Logger");
注册ILogger
//Startup.cs
services.AddSingleton(Log.Logger);
//Use
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILogger logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.Information("Inform ILog from ILogger");
return View();
}
}
您可以安装 Serilog 作为 Microsoft 日志记录框架下的记录器,方法是包含 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");
}
我能找到的关于在 ASP .NET Core Web 应用程序中使用 Serilog 的所有示例都使用 Microsoft 的 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();
}
}
如果您更喜欢 ILogger
而不是 ILogger<HomeController>
,您可以尝试注册 ILogger
。
这里有两个选项可以使用 Serialog.Information
。
使用
Log.Logger
Log.Logger.Information("Information Log from Log.Logger");
注册
ILogger
//Startup.cs services.AddSingleton(Log.Logger); //Use public class HomeController : Controller { private readonly ILogger _logger; public HomeController(ILogger logger) { _logger = logger; } public IActionResult Index() { _logger.Information("Inform ILog from ILogger"); return View(); } }
您可以安装 Serilog 作为 Microsoft 日志记录框架下的记录器,方法是包含 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");
}