首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP ILogger核心Web控制器中注入Serilog的ILogger接口

在ASP ILogger核心Web控制器中注入Serilog的ILogger接口
EN

Stack Overflow用户
提问于 2019-07-30 13:16:14
回答 2查看 11.2K关注 0票数 12

我可以找到的关于在ASP .NET核心Web应用程序中使用Serilog的所有示例都使用微软的ILogger<T>接口,而不是使用Serilog的ILogger接口。

如何使它能够通过构造函数注入Serilog的ILogger呢?

代码语言:javascript
复制
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();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-31 06:17:33

如果您喜欢ILogger而不是ILogger<HomeController>,您可以尝试注册ILogger

下面是两个使用Serialog.Information的选项。

  1. 使用Log.Logger Log.Logger.Information(“Log.Logger的信息日志”);
  2. 寄存器ILogger //Startup.cs services.AddSingleton(Log.Logger);//使用公共类HomeController :控制器{私有只读ILogger _logger;公共HomeController(ILogger记录器){ _logger =记录器;}公共IActionResult索引(){_logger.Information(“通知来自ILogger的信息”);返回视图();}}
票数 14
EN

Stack Overflow用户

发布于 2019-07-31 07:03:14

您可以在Microsoft框架下安装Serilog作为记录器,方法是包含Serilog.Extensions.Logging包,并在应用程序启动中包括以下内容:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging(x =>
    {
        x.ClearProviders();
        x.AddSerilog(dispose: true);
    });

    ...

或者,作为注入的替代方法,如果您只想引用Serilog记录器,Serilog.Log有一个静态方法Log来创建一个记录器.

代码语言:javascript
复制
...
using Serilog;
...

namespace Test.Controllers
{
    public class TestController : Controller
    {
        private readonly static ILogger log = Log.ForContext(typeof(TestController));

        public TestController()
        {
            log.Debug("Test");
        }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57272654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档