有没有一种方法可以检测Serilog的Log.Logger是否已经配置?

3

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


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的默认值,我在其他地方也没有找到答案。是否有一种方法可以检测静态Log.Logger是否已经在Serilog中配置?

1个回答

4

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

话虽如此,下面是一个解决方案,可以判断日志记录器是否已配置:

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

使用起来应该是相当安全的,因为单元测试确保Logger.None是一个单例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接