如何将C#控制台应用程序连接到正在运行的windows服务?

如何将C#控制台应用程序连接到正在运行的windows服务?,c#,C#,我有一个windows服务,它在执行时生成日志。我还对写入日志文件的每条日志消息执行console.writeline调用。但由于它是windows服务,console.write行不可见 我想编写一个C#console应用程序,它可以连接到我的服务(已经运行),并且它可以显示进程(我的windows服务)正在生成的所有console.writeline消息 更新:日志的数量非常频繁(每分钟50条消息),我不想为此而挤满windows事件日志。使用cosole窗口有助于查看日志并方便地退出显示服

我有一个windows服务,它在执行时生成日志。我还对写入日志文件的每条日志消息执行
console.writeline
调用。但由于它是windows服务,console.write行不可见

我想编写一个C#console应用程序,它可以连接到我的服务(已经运行),并且它可以显示进程(我的windows服务)正在生成的所有
console.writeline
消息


更新:日志的数量非常频繁(每分钟50条消息),我不想为此而挤满windows事件日志。使用cosole窗口有助于查看日志并方便地退出

显示服务中的窗口不是一个好主意,因为您必须找到“正确”的会话(Windows允许多个用户登录),并且还需要服务访问用户的桌面


相反,将
控制台.WriteLine
调用更改为
跟踪.WriteLine
可能是最简单的方法。然后,您可以附加到这些跟踪消息,例如,通过使用SysIntenal的

您可以使服务具有交互性,在这种情况下,您将看到控制台窗口,但您始终会看到它,我想如果您关闭它,您将停止服务


或者,让您的控制台监视器以合理的间隔从日志文件中读取更新,而不是试图直接进入服务过程。

我认为您很难将控制台连接到现有服务。两个简单的选择

  • 写入windows应用程序日志
  • 写入文本文件,然后可以使用或类似方法打开该文件

  • 如果您不想在控制台窗口上显示消息,我建议您将消息记录到Windows事件查看器中。这将帮助您……

    通过UDP发送数据,并制作一个简单的程序来显示数据。

    您可以保证同步和异步操作,甚至可以发送到另一台主机。

    或使用和tail-away打开文件。你甚至可以把它弄得五彩缤纷

    我使用cygwin跟踪log4net创建的日志文件,这似乎对我来说很有用


    谢谢你的帮助

    我认为你的替代方案是更好的解决方案。我的5美分:与桌面的服务交互很久以前就被微软极力阻止了,我甚至不确定它在Windows7甚至Vista下是否还能工作