将控制台附加到.Net Windows服务

lsmepo6l  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(113)

我目前有几个.Net windows服务在我的服务器上运行。有没有办法附加一个控制台应用程序到服务,以获得所有的iLogger数据?我遇到过这样的问题:服务作为控制台应用程序/工人服务运行完美,但一旦我作为windows服务运行它,它就坐在那里什么也不做。
我确实找到了一篇关于将VS调试器附加到进程的文章,但这对我们的网络安全不起作用。
我也愿意听取任何其他建议。

7eumitmz

7eumitmz1#

技术上的答案是否定的,但是正如@Fildor提到的,你可以设置某种类型的日志接收器,文件记录器只是一个例子,但是你也可以让日志发送电子邮件,发布到一些云记录服务,比如splunk或cloudwatch,等等。
您可能会遇到的一个问题是,您需要在ILogger可用并为您正确配置之前捕获错误。下面是我使用NLog捕获启动错误时遵循的指南:https://alistairevans.co.uk/2019/10/04/asp-net-core-3-0-logging-in-the-startup-class-with-nlog/
在最新的.NET版本中,Startup类不再是必需的,因此我将它们的示例修改为Program.cs中的代码:

// NLog: setup the nlog config first
NLogBuilder.ConfigureNLog("nlog.config");

try
{
    var host = Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.SetMinimumLevel(LogLevel.Trace);
        })
        // Use NLog to provide ILogger instances.
        .UseNLog()
        .Build();

    host.Run();
}
catch (Exception ex)
{
    var logger = nlogLoggerProvider.CreateLogger(typeof(Program).FullName);
}

}
下面是可以在nlog配置文件中配置的可用日志接收器列表:https://nlog-project.org/config/
您可能已经在使用的其他日志提供程序(如Serilog、Log 4 Net等)也可以实现同样的功能。

相关问题