16

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

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

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

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

什么有效?任何人?

4

3 回答 3

24

也许这有帮助:

builder.Register<ILogger>((c, p) =>
{
    return new LoggerConfiguration()
      .WriteTo.RollingFile(
        AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
      .CreateLogger();
}).SingleInstance();
于 2015-04-20T18:55:23.710 回答
3

我用 AutoFac 的扩展方法创建了一个nuget 包ContainerBuilder

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

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

于 2018-12-11T07:13:04.557 回答
1

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

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

  1. 安装包
  2. 正常创建记录器
  3. 调用builder.RegisterLogger()其中一个模块或文件的ConfigureContainer()方法Startup.cs
于 2020-05-26T08:04:47.637 回答