【问题标题】:Serilog with AutofacSerilog 与 Autofac
【发布时间】:2015-04-20 18:50:34
【问题描述】:

我有一个记录器包装器,我想通过以下配置向它注入 serilog:

var logger = new LoggerConfiguration()
   .WriteTo.RollingFile(
      AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
   .CreateLogger();

我似乎找不到正确的注册方法。我想要它作为单身人士。以上是实例。

我尝试注册上面的实例。没用。我试过 lambda,没用。

什么有效?有人吗?

【问题讨论】:

    标签: c# autofac serilog


    【解决方案1】:

    也许这会有所帮助:

    builder.Register<ILogger>((c, p) =>
    {
        return new LoggerConfiguration()
          .WriteTo.RollingFile(
            AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
          .CreateLogger();
    }).SingleInstance();
    

    【讨论】:

    【解决方案2】:

    我为 AutoFac 的 ContainerBuilder 创建了一个带有扩展方法的 nuget-package

    您需要做的就是安装它并使用记录器配置或日志路径(以及可选的模板,您获得默认值)调用扩展。

    var builder = new ContainerBuilder();
    builder.RegisterSerilog("my-log-path"); // or a loggerconfiguration
    var container = builder.Build();
    var logger = container.Resolve<ILogger<MyClass>>();
    logger.LogInformation("Hello World");
    

    这也适用于 ASP.NET-Core。您可以在 github-repository 上找到示例和源代码。

    【讨论】:

      【解决方案3】:

      这里还有另一个用于 Autofac 和 Serilog 集成的 Nuget 包: Autofac-Serilog integration

      它适用于 ASP.NET Core 3.1。 步骤:

      1. 安装包
      2. 正常创建记录器
      3. 在任一模块或Startup.cs 文件的ConfigureContainer() 方法中调用builder.RegisterLogger()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        相关资源
        最近更新 更多