【问题标题】:Disable Topshelf console output禁用 Topshelf 控制台输出
【发布时间】:2015-01-09 19:03:33
【问题描述】:

当调用HostConfigurator.RunAsLocalSystem() 或等效函数时,TopShelf 库会向控制台输出几行。

如何防止 TopShelf 输出这些行?

【问题讨论】:

    标签: c# console output topshelf


    【解决方案1】:

    虽然威廉·莫里森的回答是正确的,但为了让登陆这里的人们希望使用 TopShelf 启用日志记录,这里是使用 NLog 的方法之一

    第 1 步:通过 NuGet 安装以下内容 PackageManager 控制台> Install-Package TopShelf PackageManager 控制台> 安装-Package TopShelf.NLog

    第 2 步:在配置 lambda 中,告诉 TopShelf 您打算使用 NLog

    HostFactory.Run(configurator =>
                {
                    configurator.Service<NotificationEngineService>(svc =>
                    {
                        // configure service start, stop etc. here
                    });
    
                    // The below option is add via TopShelf.NLog.dll assembly
                    configurator.UseNLog();
                    // Continue configuring
    
                });
    

    【讨论】:

    • 好主意发布一个例子。谢谢!
    【解决方案2】:

    控制台输出是日志信息。如果您将日志框架与 Topshelf 一起使用,则这些行将显示在日志文件中而不是控制台中。

    我建议使用带有 Topshelf 的日志框架。无论如何,您应该始终登录一个严肃的项目,它消除了控制台中的行。双赢。

    【讨论】:

    • 你也可以实现一个NullLogger,如果我没记错的话github.com/Topshelf/Topshelf/blob/develop/src/Topshelf/Logging/…是你需要实现和注册的接口。
    • 这是另一种选择。为了我自己的启迪,我该如何注册NullLogger
    • HostLogger.UseLogger() 是你用来注册它的。它位于 Topshelf.Logging 命名空间中。
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2020-05-07
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多