如何将C#控制台应用程序附加到正在运行的Windows服务?

时间:2010-01-21 14:59:16

标签: c#

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

我想编写一个可以附加到我的服务(已经运行)的C#控制台应用程序,它只能显示进程(我的Windows服务)正在生成的所有console.writeline消息。

更新:日志量非常频繁(每分钟50条消息),我宁愿不想为此拥挤Windows事件日志。使用cosole窗口有助于查看日志并在方便时退出

7 个答案:

答案 0 :(得分:6)

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

相反,将Console.WriteLine来电更改为Trace.WriteLine可能最简单。然后,您可以附加到这些跟踪消息,例如使用SysIntenal的 DebugView

答案 1 :(得分:5)

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

  1. 写入Windows应用程序日志
  2. 写入文本文件,然后可以使用wintail或类似的
  3. 打开该文件

    重新更新 - 数字2最好。

答案 2 :(得分:1)

你可以让服务互动,在这种情况下你会看到控制台窗口,但你总能看到它,如果你关闭它,我,你将停止服务

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

答案 3 :(得分:1)

我建议您将消息记录到Windows事件查看器,如果没有强烈的愿望在控制台窗口显示它们。这link可以帮助你...

答案 4 :(得分:1)

通过UDP发送数据并制作一个简单的程序来显示数据 您保证并进行异步操作,甚至可以发送给其他主机。

答案 5 :(得分:1)

我使用cygwin来关闭log4net创建的日志文件,这似乎对我有用。

感谢您的帮助!

答案 6 :(得分:0)

或者使用http://www.log-expert.de/打开文件并拖尾。你甚至可以把它变得丰富多彩!