如何正确使用Topshelf.Logging

本文关键字:Topshelf Logging 何正确 | 更新日期: 2023-09-27 18:37:08

知道如何正确使用Topshelf.Logging吗?

是否必须将NLogLogWriter传递给服务类的构造函数?

以及如何启用输出到控制台?

class Program
    {
        #region Properties
        Topshelf.Logging.NLogLogWriter logger;
        static string mainLoggerName = "MainLogger";
        #endregion
        static void Main(string[] args)
        {
            var  nlogLogger = LogManager.GetCurrentClassLogger();
            Topshelf.Logging.NLogLogWriter logger = new Topshelf.Logging.NLogLogWriter(nlogLogger, mainLoggerName);

            HostFactory.Run(x =>                                 
            {
                x.Service<ExSPCAgentService>(s =>                         
                {
                    s.ConstructUsing(name => new MyAgentService());      
                    // s.WhenStarted(tc => tc.Start());               
                    s.WhenStarted(tc =>
                    {
                        // Add more config options if you need
                        tc.Start();
                    });
                    s.WhenStopped(tc => tc.Stop());                
                });
                x.RunAsLocalSystem();                             
                x.UseNLog();
                x.SetDescription("MyAgentService");         
                x.SetDisplayName("MyAgentService");                        
                x.SetServiceName("MyAgentService");                        
            });
        }
    }

如何正确使用Topshelf.Logging

若要指定记录器,请使用 UseNLog 的重载,该重载允许您指定 LogFactory。

要记录到控制台,您将启用控制台目标。

编辑:文档

网络集成

若要通过 NLog 启用日志记录,可以使用 Topshelf.NLog NuGet 包。添加到项目后,通过配置将 Topshelf 配置为使用 NLog:

HostFactory.New(x =>
{
    x.UseNLog();
});

这将更改 HostLogger 以使用 NLog。也可以使用相同的方法重载传递现有的 LogFactory。