通过 UDP 发送消息的 TraceListener






3.18/5 (13投票s)
一个 TraceListener 的实现,它通过网络发送消息。
引言
生成应用程序日志消息对于诊断和测试系统非常重要,对于复杂和大型系统来说更是必不可少。.NET 框架当前提供 EventLogTraceListener
和 TextWriterTraceListener
,它们对于桌面应用程序来说效果很好;但对于需要远程监控/测试的更复杂的服务器应用程序,则没有解决方案。
因此,我编写了这个小型实用程序 NetTraceListener
类,它继承自 TraceListener
并将日志消息输出到定义的 UDP 端口。
要求
您需要一个基本的 UDP 消息收集器才能查看 UDP 消息。
代码
整个源代码文件不足 20 行代码。
构造函数接受主机名(例如“127.0.0.1”)和端口号,它创建一个 UDPClient
对象,用于发送 UDP 消息。
UdpClient notifier;
IPEndPoint groupEP;
public TraceNetListener( string host, int port )
{
groupEP = new IPEndPoint( IPAddress.Parse( host ) ,port );
notifier = new UdpClient();
}
重写的方法 Close()
public override void Close()
{
notifier.Close();
base.Close ();
}
重写的方法 Write()
,它将提供的消息转换为字节,并通过 UDP 通道发送它们。
public override void Write(string message)
{
try
{
byte[] bytes = Encoding.ASCII.GetBytes(message);
notifier.Send(bytes, bytes.Length, groupEP);
}
catch (Exception e)
{}
}
现在在您的主应用程序中,您需要将此类添加为跟踪侦听器。
Trace.Listeners.Add( new TraceNetListener("127.0.0.1", 11000 ));
Trace.Write("HELLO WORLD !");
一切就绪。 当您执行此代码时,您的 UDP 消息收集器将获得所有跟踪消息。