c# - 如何关闭Serilog?

标签 c# serilog

我们使用 Serilog 通过 Windows 服务将项目记录到数据库中,并且用户希望能够进行手动运行,因此我们制作了一个按钮(在网页上)来调用相同的代码(作为一个模块,而不是服务本身)。

当我们添加代码来初始化日志时,代码将继续添加到数据库日志表中,它还会记录之后的所有 http 流量。因此,在这段代码运行之后,我们想要“关闭”在 Web 服务器上运行的 Logger。有没有简单的方法可以做到这一点?

Log.Logger = new LoggerConfiguration()
       .WriteTo.MSSqlServer(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString,
                "LOGS")
       .CreateLogger();

最佳答案

可以在运行时使用 LoggingLevelSwitch 修改日志级别:

var ls = new LoggingLevelSwitch();

Log.Logger = new LoggerConfiguration()
   .MinimumLevel.ControlledBy(ls)
   .WriteTo.MSSqlServer(...)
   .CreateLogger();

日志记录最初将处于信息级别,您可以通过开关更改它。

Serilog 没有定义 Off 级别,但您可以将其近似为:

ls.MinimumLevel = ((LogEventLevel) 1 + (int) LogEventLevel.Fatal);

...关闭注销。

关于c# - 如何关闭Serilog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849166/

相关文章:

c# - 将 Serilog 与 Caliburn Micro .Net Core 3.1 结合使用

c# - 对 streamwriter 和压缩如何工作的困惑

c# - 获取无线网络强度

C# reshape 数组 1->2 D 而不复制数据

c# - C# 可以像 Java 一样简单地打印集合值吗?

c# - NHibernate - 根据子属性过滤掉结果

.net - 使用 SeriLog 和 PowerShell 实现 Hello World

asp.net-core - 如何将 MiniProfiler 4 记录到 Serilog(或在中间件内访问)?

c# - 在特定列中写入 Serilog ASP.NET MVC C#

splunk - 如何设置 Splunk 以接收来自 Serilog/.Net 的日志记录?