We are using Serilog to log items into a db with a Windows service, and the users wanted to be able to do a manual run, so we made a button (on a web page) to make a call to the same code (as a module, not the service itself).
When we added in the code to initialize the log so the code will continue adding to the db log table, it also logs all the http traffic after that as well. So after this code runs we want to 'turn off' the Logger running on the Webserver. Is there an easy way to do that?
Log.Logger = new LoggerConfiguration()
.WriteTo.MSSqlServer(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString,
"LOGS")
.CreateLogger();
Log levels can be modified at runtime with LoggingLevelSwitch
:
var ls = new LoggingLevelSwitch();
Log.Logger = new LoggerConfiguration()
.MinimumLevel.ControlledBy(ls)
.WriteTo.MSSqlServer(...)
.CreateLogger();
Logging will initially be at the Information
level, you can change this via the switch.
Serilog doesn't define an Off
level, but you can approximate it with:
ls.MinimumLevel = ((LogEventLevel) 1 + (int) LogEventLevel.Fatal);
...to turn logging off.