Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确使用Topshelf.Logging_C#_Logging_Nlog_Topshelf - Fatal编程技术网

C# 如何正确使用Topshelf.Logging

C# 如何正确使用Topshelf.Logging,c#,logging,nlog,topshelf,C#,Logging,Nlog,Topshelf,如何正确使用Topshelf.Logging有什么线索吗 我是否必须将NLogLogWriter传递给服务类的构造函数 以及如何启用控制台的输出 class Program { #region Properties Topshelf.Logging.NLogLogWriter logger; static string mainLoggerName = "MainLogger"; #endregion st

如何正确使用
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.NLogLogWriter记录器;
静态字符串mainLoggerName=“MainLogger”;
#端区
静态void Main(字符串[]参数)
{
var nlogLogger=LogManager.GetCurrentClassLogger();
Topshelf.Logging.NLogLogWriter logger=新的Topshelf.Logging.NLogLogWriter(nlogLogger,mainLoggerName);
HostFactory.Run(x=>
{
x、 服务(s=>
{
s、 ConstructUsing(name=>newmyagentservice());
//s.WhenStarted(tc=>tc.Start());
s、 开始时(tc=>
{
//如果需要,请添加更多配置选项
tc.Start();
});
s、 停止时(tc=>tc.Stop());
});
x、 RunAsLocalSystem();
x、 UseNLog();
x、 SetDescription(“MyAgentService”);
x、 SetDisplayName(“MyAgentService”);
x、 SetServiceName(“MyAgentService”);
});
}
}

要指定记录器,请使用允许您指定记录器的

对于登录到控制台,您将启用

编辑:

NLog积分

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

这会将主机记录器更改为使用NLog。也可以使用相同方法的重载来传递现有的LogFactory


非常感谢。关于控制台目标的第二部分很有用。请提供一个关于LogFactory的例子。当使用x.UseNLog(existingLogFactory)时,不可能在其他类中访问此工厂。我尝试使用LogManager.GetCurrentClassLogger(),但LogManager配置为null。必须做什么才能在其他类和模块中使用exist logFactory?顺便说一句,我使用拉马尔作为国际奥委会。谢谢:)那么,你可以让日志工厂成为静态类成员吗?
HostFactory.New(x =>
{
    x.UseNLog();
});