65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 UDP 发送消息的 TraceListener

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.18/5 (13投票s)

2004 年 7 月 29 日

CPOL
viewsIcon

64355

一个 TraceListener 的实现,它通过网络发送消息。

引言

生成应用程序日志消息对于诊断和测试系统非常重要,对于复杂和大型系统来说更是必不可少。.NET 框架当前提供 EventLogTraceListenerTextWriterTraceListener,它们对于桌面应用程序来说效果很好;但对于需要远程监控/测试的更复杂的服务器应用程序,则没有解决方案。

因此,我编写了这个小型实用程序 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 消息收集器将获得所有跟踪消息。

© . All rights reserved.