VB .Net Windows服务控制台消息
问题描述:
我有一个.Net控制台应用程序,每分钟在控制台上显示数千行。我想将其转换为Windows服务,但是我仍然需要查看这些消息的方法。有太多的消息将它们写入事件日志甚至标准的日志文件。我想知道是否有办法编写一个可以简单地从服务中拦截这些消息并将它们显示在控制台窗口中的systray应用程序。我不需要保存较旧的消息,我只需要查看当前的活动。VB .Net Windows服务控制台消息
答
该服务将需要写入共享内存某些排序为了与另一个显示输出的程序进行通信。我认为你最好的选择是输出到一个SQL表或其他东西,并清除旧的条目,这样一次只能有1000条记录。然后在查看器应用程序中每秒查看表几次,并显示输出的流式视图。
答
听起来像System.Diagnostics.Trace
类型将是完美的。分两个阶段实施您的更改:
对于阶段1,您将ConsoleTraceListener添加到您的应用程序,并将当前的所有调用转换为控制台以写入到Trace。这只会保持您现有的行为,但它会让您轻松地对新输出进行更改。
对于阶段2,您实现了一个新的TraceListener,您可以附加而不是ConsoleTraceListener,它可以根据消息执行任何您想要的操作。这可能包括监听您建议的系统托盘或控制台应用程序的连接。更好的是,我敢打赌,一些谷歌搜索会告诉你一个TraceListener已经做到了你想要的。
至于通讯的实际机制,我的建议是使用标准的SysLog的方法。这具有为客户端工作现有软件的优势,使您更有可能找到existing TraceListener,许多现有的系统日志客户端将带来一些自动数据挖掘作为奖励。