获取当前序列号配置以了解文件的完整写入路径



我们正试图从log4net完全切换到Serilog。然而,这部分功能似乎缺失了。我需要的是能够在库类中获取日志文件的位置。这对我们的Desktop Click Once应用程序很重要,因为不同操作系统和不同用户的位置不同。当用户需要访问日志时,我们可以将他引导到适当的文件夹。这里提出了非常相似的问题:读取当前序列号';s配置但我不敢相信没有办法从Serilog获得这些信息。我不需要更改配置-只需阅读即可。在log4net中,我们可以做:

log4net.LogManager.GetAllRepositories()

然后

repository.Root.Appenders.OfType<FileAppender>

请告诉我,当前LoggerConfiguration有某种后门,或者是否有其他方法可以获取当前文件接收器的文件路径。

Serilog不公开已配置的接收器列表,因此如果您真的想从实时Serilog配置中获得这些信息,那么目前唯一的选择就是使用反射。

你可以在这个答案上看到一个例子:

单元测试序列号配置

也就是说,如果您只想知道日志文件的写入路径,那么在设置Serilog日志记录管道时,您可以在应用程序开始时轻松存储这些文件。

如果你在代码中配置文件路径,你可以将信息存储在整个应用程序可以访问的静态属性中。如果从appSettings.jsonApp.config获取文件夹路径,则可以从中读取信息。

如果您的配置中有环境变量,您可以通过扩展这些环境变量(例如Environment.ExpandEnvironmentVariables("%LogPath%\AppName.log")(来获得与Serilog相同的值

最新更新