我有一个配置了serilog的应用程序用于记录。我的应用程序中有一个复选框,只有单击该复选框按钮才能记录所有信息日志,否则只记录错误和警告日志。
在调试模式下,如何在未选中按钮时仅记录调试,错误和警告日志。我一直试图这样做2天。我已尝试使用.MinimumLevel.Debug()
/ restrictedToMinimumLevel: LogEventLevel.Debug
在google / stackoverflow中建议的所有方法,但它对我不起作用。它还记录信息日志。
请帮帮我。仅记录调试,错误和警告日志。
启用复选框时,val
为true:
if (val == "true")
{
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();
}
else if (val == "false")
{
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Debug)
.CreateLogger();
}
当val
为false时,即,如果未启用复选框,则应仅记录调试,错误和警告日志。
你无法使用MinimumLevel
as @barbsan评论来实现它。
但是你可以在你的情况下使用filtering。
过滤器只是
LogEvent
的谓词
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath)
.Filter.ByIncludingOnly(isNotInfoLevel)
.CreateLogger();
在以下功能中,您可以根据需要添加更多条件
private static bool isNotInfoLevel(LogEvent le)
{
return le.Level != LogEventLevel.Information;
}
使用ByExcluding
排除信息级别的另一种方法
.Filter.ByExcluding((le) => le.Level == LogEventLevel.Information)