有没有办法检测Serilog的Log.Logger是否已经配置?



我在类库和中都使用Serilog。NET控制台应用程序(C#)。记录器当前在控制台应用程序中配置:


Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.File(
"verboseLog.txt", 
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Verbose,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
)
.CreateLogger();

如果调用者还没有配置它,我想在库中有条件地配置它。(这个库将来可能会被其他程序员与其他应用程序一起使用。)Serilog在Github上的wiki没有提到Log的任何默认值。Logger,我在其他任何地方都没有找到答案是否有方法检测静态日志。记录器已在序列号中配置

在库中配置日志记录系统不是一个好主意。日志记录配置是您希望在应用程序级别执行的操作。我敢打赌,有一个很好的理由,你不能知道记录器是否配置:因为你不需要知道!

话虽如此,这里有一个解决方案来确定记录器是否配置:

bool isLoggerConfigured = Log.Logger != Logger.None;

使用它应该是非常安全的,因为单元测试可以确保Logger.None是一个单例。

最新更新