Serilog 中是否有我可以(以编程方式)检查当前配置的属性/方法? (水槽,最低水平)
例如如果有这个配置:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File("log.txt")
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();
我以后怎么读这个配置?
(在我的例子中,配置是在我的应用程序之外动态创建的)
不,没有反思的方法来检查 Serilog 配置。
我必须为应用程序内置的日志阅读器做类似的事情,所以我通过安装 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();
}