Serilog与Autofac

时间:2015-04-20 18:50:35

标签: c# autofac serilog

我有一个记录器包装器,我想用以下配置perse注入serilog:

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

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

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

什么有效?任何人吗?

3 个答案:

答案 0 :(得分:17)

也许这会有所帮助:

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

答案 1 :(得分:1)

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

它与ASP.NET Core 3.1一起很好地工作。 步骤:

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

答案 2 :(得分:0)

我为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上找到示例和源代码。