读取当前 Serilog 的配置

问题描述 投票:0回答:2

Serilog 中是否有我可以(以编程方式)检查当前配置的属性/方法? (水槽,最低水平)

例如如果有这个配置:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.File("log.txt")
    .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
    .CreateLogger();

我以后怎么读这个配置?

(在我的例子中,配置是在我的应用程序之外动态创建的)

c# serilog
2个回答
3
投票

不,没有反思的方法来检查 Serilog 配置。


0
投票

我必须为应用程序内置的日志阅读器做类似的事情,所以我通过安装 Serilog.Settings.AppSettings 并通过 ConfigurationManager 读取配置来解决这个问题。

因为我启用了滚动,所以我必须创建一个辅助函数来提供日志文件的实际文件名。

public static string GetLogFileName()
{
        var filePathSetting = ConfigurationManager.AppSettings.Get("serilog:write-to:File.path");
        var rollingEnabled = ConfigurationManager.AppSettings.Get("serilog:write-to:File.rollingInterval");
        if (!string.IsNullOrEmpty(rollingEnabled))
        {
                if (rollingEnabled.Equals("Day"))
                {
                        Regex regex = new Regex(@"(\.[a-z]+$)", RegexOptions.IgnoreCase);
                        var matches = regex.Matches(filePathSetting);
                        if (matches.Count > 0)
                        {
                                filePathSetting = filePathSetting.Replace(matches[0].Value, DateTime.Now.ToString("yyyyMMdd") + matches[0].Value);
                        }
                        return filePathSetting;
                }
        }

        return filePathSetting.ToString();
}
© www.soinside.com 2019 - 2024. All rights reserved.