如何解决使用Serilog的自定义配置提供程序
我有一个ASP.NET Core 3.1 Web API应用程序,其中将Serilog
与Serilog.Sinks.MSSqlServer
接收器一起使用。
问题:
- 如果无法在appsettings文件中配置设置,是否可以使用一些自定义配置提供程序读取Serilog的MSSQL接收器配置(例如,连接字符串)?
- 是否在注册所有必需的依赖项之后在
LoggerConfiguration
上进行一些设置? (类似于我们使用IPostConfigureOptions
所做的事情。)
如果您想知道我在做什么,可以对问题进行高级描述:
在我的组织中,所有应用程序设置都存储在一个公共数据库中。这意味着Serilog MSSqlServer接收器所需的ConnectionString也将位于公共数据库中。
Serilog使用Host
中的IHostBuilder
在Program.cs
级别进行配置。另一方面,从我们的公共数据库中读取设置的服务已在Startup.cs
的ASP.NET Core的DI中注册。
我添加了一个名为SerilogPostConfigure
的类,该类实现了IPostConfigureOptions<LoggerConfiguration>
并将其注册在Startup.cs
中,例如services.ConfigureOptions<SerilogPostConfigure>()
。在此类中,我注入了所有可以帮助我连接到公共数据库以获得所需的连接字符串的依赖项。但是,永远不会调用此类!我不明白为什么。
解决方法
我认为您应该尝试在ASP.NET Core级别上使用自定义配置提供程序。您可以告诉ASP.NET Core应用程序从自定义位置读取应用程序的配置(默认情况下,该程序从appsettings.json文件和环境变量读取)。
这里是有关创建自定义配置提供程序的文章,该提供程序从数据库中读取配置:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1#custom-configuration-provider
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。