我被引导相信我可以设置全局最低信息级别,然后在特定的命名空间或类中我可以将其提升到“调试”甚至“详细”。这是代码:
using Commons;
using Serilog;
using Serilog.Events;
using System;
namespace SerilogTesting
{
internal class Program
{
static void Main(string[] args)
{
try
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("SerilogTesting.Program", LogEventLevel.Debug)
.WriteTo.Console()
.CreateLogger();
Log.Debug($"{nameof(Program.Main)} started.");
var logic = new DoSomething();
logic.Rain();
}
catch
{
}
finally
{
Log.CloseAndFlush();
}
}
}
}
这是图书馆课程
using Serilog;
namespace Commons
{
public class DoSomething
{
public void Rain()
{
Log.Information("It is raining.");
}
}
}
期望的是,即使最低级别设置为信息,Main 中的 Log.Debug 语句仍将根据 Override 调用打印出来,据称该调用应该允许 SerilogTesting.Program 类中的 Log 调用通过(如果它们位于)最低调试级别。
以下代码有效:
//In namesapce "SerilogTesting" of create a logger which has the source name "SerilogTesting.Program"
var logger1 = Log.ForContext<Program>();
logger1.Debug($"{nameof(Main)} started.");
//Log.Debug($"{nameof(Main)} started.");