【问题标题】:Serilog : How to use logging in 'Class Library' of asp.net coreSerilog:如何在 asp.net 核心的“类库”中使用日志记录
【发布时间】:2020-10-06 11:14:41
【问题描述】:

我正在使用 Serilog 登录 asp.net 核心网站,并且项目中使用了“类库”。

  1. asp.net核心类库中如何实现日志记录?
  2. 有没有办法在“类库”中独立实现日志记录?

【问题讨论】:

  • Gurpreet Kailey 能否分享一下您如何在类库中实现 serilog 的代码。我正在尝试实现它,但不确定如何处理

标签: asp.net-core-1.0 serilog


【解决方案1】:

只需将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 是一个facade,一个用于记录的API,它本身实际上并不做任何记录。当你有一个真正的应用程序使用它时,实际的日志记录是通过你插入到外观中的提供程序发生的。这就是类似 Serilog 的地方。在您的实际应用程序中,您将配置日志记录以使用 Serilog,然后任何时候调用 ILogger 上的方法,该方法将被代理到您实际的真实日志记录提供程序 (Serilog) ,然后 Serilog 进行实际的日志记录。

【讨论】:

  • 我收到以下错误:尝试激活“ConnectionManagerProvider”时无法解析“Microsoft.Extensions.Logging.ILogger`1[ConnectionManagerProvider]”类型的服务。我在课堂上使用过私有只读 ILogger _logger;公共 ConnectionManagerProvider(ILogger 记录器) { _logger = 记录器; }
  • 与Chris Pratt提供的解决方案一起,确保将'MyClass'类添加到asp.net核心的依赖中。
  • Gurpreet Kailey 能否分享一下您如何在类库中实现 serilog 的代码。我正在尝试实现它,但不确定如何处理
  • @veenapanakanapalli,我这里不能分享代码完整代码,我会尝试在例子中演示。为此,您必须等待一天,让我知道您是否可以。
  • 但是我该如何在 gRPC 服务中使用 MyClass 呢?如果我执行 new MyClass() 它将在构造函数中期待一个记录器......但是如果我在构造函数中传递一个记录器,它现在将使用 gRPC 服务的记录器实例,这不是我想要的......我我是 C# 的新手,但对我来说,这里有多少“魔法”,而且为了从类库中进行简单的日志记录,我已经用谷歌搜索了很长时间......请帮助某人......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
相关资源
最近更新 更多