将控制台连接到.net Windows服务



目前我的服务器上运行着几个。net windows服务。是否有一种方法可以将控制台应用程序连接到服务以获取所有的ILogger数据?我曾经遇到过服务作为控制台应用程序/worker服务完美运行的问题,但一旦我将其作为windows服务运行,它就只是坐在那里什么也不做。

我确实找到了一篇关于将VS调试器附加到进程的文章,但这对我们的网络安全不起作用。

我也愿意接受任何其他建议。

技术上的答案是否定的,但是正如@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版本中不再需要启动类,所以我将它们的示例修改为您在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、Log4Net等。

最新更新