【问题标题】:Serilog topshelf integration not workingSerilog topshelf 集成不起作用
【发布时间】:2015-04-02 15:42:03
【问题描述】:

我正在尝试使用 Topshelf 和 Serilog(分别为 Serilog.Extras.Topshelf 包)为我的 Windows 服务设置一个简单的日志记录配置。

HostLogger.UseLogger(new SerilogHostLoggerConfigurator(new LoggerConfiguration()
                .WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
                .WriteTo.ColoredConsole()
                .MinimumLevel.Debug()
                .CreateLogger()));
HostFactory.Run(x => {
            x.UseSerilog();
            ...

服务运行良好,但是没有输出到控制台和指定的日志文件(我可以看到正在创建一个,但它仍然是空的)。有人使用过这两种框架吗?

【问题讨论】:

    标签: c# logging windows-services topshelf serilog


    【解决方案1】:

    第二次调用“x.UseSerilog()”将 TopShelf 的 HostLogger 重置为使用您尚未配置的 Serilog 的全局实例 (Log.Logger)。

    删除第二个调用,日志记录应该开始工作。

    另一种选择是配置全局记录器:

    Log.Logger = new LoggerConfiguration()
                .WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
                .WriteTo.ColoredConsole()
                .MinimumLevel.Debug()
                .CreateLogger();
    
    HostFactory.Run(x => {
            // configure TopShelf to use Serilog's global instance.
            x.UseSerilog();
    }
    

    【讨论】:

    • +1 我没有意识到在没有LoggerConfigurationILogger 参数的情况下使用x.UseSerilog 会使用全局记录器。
    猜你喜欢
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2018-07-02
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多