我有一个记录器包装器,我想用以下配置perse注入serilog:
var logger = new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
我似乎无法找到正确的注册方式。我想要它作为单身人士。以上是实例。
我尝试注册上面的实例。没工作。我试过lambda,没有用。
什么有效?任何人吗?
答案 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一起很好地工作。 步骤:
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上找到示例和源代码。