我有一个配置了 serilog 进行日志记录的应用程序。我的应用程序中有一个复选框,只有单击该复选框按钮时,它才应记录所有信息日志,否则仅应记录错误和警告日志。
在调试模式下,当未选中该按钮时,如何仅记录调试、错误和警告日志。两天以来我一直在尝试这样做。我已经尝试了 google/stackoverflow 中建议的所有方法.MinimumLevel.Debug()
/restrictedToMinimumLevel: LogEventLevel.Debug
它对我不起作用。它还记录信息日志。
请帮我解决这个问题。仅记录调试、错误和警告日志。
val
当复选框启用时为真:
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();
}
when val
为 false,即当未启用复选框时,它应该仅记录调试、错误和警告日志。
你无法使用它来实现它MinimumLevel
正如@barbsan 评论。
但你可以使用过滤 https://github.com/serilog/serilog/wiki/Configuration-Basics#filters对于你的情况。
过滤器只是谓词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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)