如何关闭Serilog?
How to turn off Serilog?
我们使用 Serilog 通过 Windows 服务将项目记录到数据库中,用户希望能够手动 运行,所以我们制作了一个按钮(在网络上页面)调用相同的代码(作为模块,而不是服务本身)。
当我们添加代码来初始化日志时,代码将继续添加到数据库日志 table,之后它还会记录所有的 http 流量。因此,在这段代码 运行s 之后,我们希望 'turn off' Web 服务器上的记录器 运行ning。有简单的方法吗?
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();
日志记录最初将处于 Information
级别,您可以通过开关更改它。
Serilog 未定义 Off
级别,但您可以将其近似为:
ls.MinimumLevel = ((LogEventLevel) 1 + (int) LogEventLevel.Fatal);
...关闭注销。
这个问题已经有好几年了,但我现在正好遇到类似的问题。
关闭 Serilog 的注销最简单的方法是创建一个新的记录器没有任何接收器。从 Serilog 的文档中,Configuration Basics:
Log.Logger = new LoggerConfiguration().CreateLogger();
Log.Information("No one listens to me!");
编辑 (08/05/2017)
上述解决方案不正确。经过更多研究,我发现这可以通过在配置记录器时设置过滤器来完成:
Log.Logger = new LoggerConfiguration()
.Filter.ByExcluding(_ => !IsLoggingEnabled)
.WriteTo.MSSqlServer(...)
.CreateLogger();
,其中 IsLoggingEnabled
只是一个布尔标志。
根据 Microsoft 日志记录文档,如果您将日志级别设置为 None,所有日志都将被抑制。
To suppress all logs, specify LogLevel.None. LogLevel.None has a value of 6, which is higher than LogLevel.Critical (5).
Any logs below the minimum level are not:
Passed to the provider. Logged or displayed.
您可以在配置日志记录部分下参考此文档。 logging for asp.net core
对于 Serilog,您可以设置
"Serilog": {
"MinimumLevel": {
"Default": "6"
}}
这个配置会关闭Serilog,我在运行的时候试了一下,成功了。
我们使用 Serilog 通过 Windows 服务将项目记录到数据库中,用户希望能够手动 运行,所以我们制作了一个按钮(在网络上页面)调用相同的代码(作为模块,而不是服务本身)。
当我们添加代码来初始化日志时,代码将继续添加到数据库日志 table,之后它还会记录所有的 http 流量。因此,在这段代码 运行s 之后,我们希望 'turn off' Web 服务器上的记录器 运行ning。有简单的方法吗?
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();
日志记录最初将处于 Information
级别,您可以通过开关更改它。
Serilog 未定义 Off
级别,但您可以将其近似为:
ls.MinimumLevel = ((LogEventLevel) 1 + (int) LogEventLevel.Fatal);
...关闭注销。
这个问题已经有好几年了,但我现在正好遇到类似的问题。
关闭 Serilog 的注销最简单的方法是创建一个新的记录器没有任何接收器。从 Serilog 的文档中,Configuration Basics:
Log.Logger = new LoggerConfiguration().CreateLogger();
Log.Information("No one listens to me!");
编辑 (08/05/2017)
上述解决方案不正确。经过更多研究,我发现这可以通过在配置记录器时设置过滤器来完成:
Log.Logger = new LoggerConfiguration()
.Filter.ByExcluding(_ => !IsLoggingEnabled)
.WriteTo.MSSqlServer(...)
.CreateLogger();
,其中 IsLoggingEnabled
只是一个布尔标志。
根据 Microsoft 日志记录文档,如果您将日志级别设置为 None,所有日志都将被抑制。
To suppress all logs, specify LogLevel.None. LogLevel.None has a value of 6, which is higher than LogLevel.Critical (5).
Any logs below the minimum level are not: Passed to the provider. Logged or displayed.
您可以在配置日志记录部分下参考此文档。 logging for asp.net core
对于 Serilog,您可以设置
"Serilog": {
"MinimumLevel": {
"Default": "6"
}}
这个配置会关闭Serilog,我在运行的时候试了一下,成功了。