带有 Autofac 的 Serilog
Serilog with Autofac
我有一个记录器包装器,我想使用以下配置向其注入 serilog:
var logger = new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
我似乎找不到正确的注册方法。我想要它作为单身人士。以上是实例。
我尝试注册上面的实例。没有工作。我试过 lambda,没用。
什么有效?有人吗?
也许这有帮助:
builder.Register<ILogger>((c, p) =>
{
return new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
}).SingleInstance();
我为 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.
上找到示例和源代码
这里还有另一个用于 Autofac 和 Serilog 集成的 Nuget 包:
Autofac-Serilog integration
它适用于 ASP.NET Core 3.1。
步骤:
- 安装包
- 正常创建记录器
- 在模块之一或
Startup.cs
文件的 ConfigureContainer()
方法中调用 builder.RegisterLogger()
我有一个记录器包装器,我想使用以下配置向其注入 serilog:
var logger = new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
我似乎找不到正确的注册方法。我想要它作为单身人士。以上是实例。
我尝试注册上面的实例。没有工作。我试过 lambda,没用。
什么有效?有人吗?
也许这有帮助:
builder.Register<ILogger>((c, p) =>
{
return new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
}).SingleInstance();
我为 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.
上找到示例和源代码这里还有另一个用于 Autofac 和 Serilog 集成的 Nuget 包: Autofac-Serilog integration
它适用于 ASP.NET Core 3.1。 步骤:
- 安装包
- 正常创建记录器
- 在模块之一或
Startup.cs
文件的ConfigureContainer()
方法中调用builder.RegisterLogger()