【原创】基于UDP广播的局域网Web Window Service日志跟踪小工具
特别是日志较多的时候很麻烦 过滤筛选也不方便

用UDP主要是因为效率高 无连接状态 应用端只管发送消息 不用关心有没有收听的 有没有收到

1 public class UdpTraceListener : TraceListener
2 {
3 public TraceEventType EventType;
4 UdpClient Client;
5 int ServerPort;
6 public UdpTraceListener(int serverPort)
7 {
8 Client = new UdpClient();
9 Client.EnableBroadcast = true;
this.Filter = new UdpTraceFilter(this);
ServerPort = serverPort;
}
public override void Write(string message)
{
}
public override void WriteLine(string message)
{
var data = System.Text.Encoding.UTF8.GetBytes(EventType + "|" + message);
Client.Send(data, data.Length, new IPEndPoint(IPAddress.Broadcast, ServerPort));
}
public class UdpTraceFilter : TraceFilter
{
UdpTraceListener Listener;
public UdpTraceFilter(UdpTraceListener listener)
{
Listener = listener;
}
public override bool ShouldTrace(TraceEventCache cache, string source, TraceEventType eventType, int id, string formatOrMessage, object[] args, object data1, object[] data)
{
Listener.EventType = eventType;
return true;
}
}
}
控制台小工具
1 static void Main(string[] args)
2 {
3 Console.WindowWidth = ;
4 Console.Title = "UDP远程日志监视器";
5
6
7
8 var portStr = string.Empty;
9 int port = ;
while (!int.TryParse(portStr, out port))
{
Console.WriteLine("请输入监听端口号:");
portStr = Console.ReadLine();
}
IPAddress ipAddress = IPAddress.Any;
UdpClient udpClient = new UdpClient(port);
udpClient.EnableBroadcast = true;
Console.WriteLine("开始监听...");
while (true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, );
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
var log = Encoding.UTF8.GetString(receiveBytes);
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("{0} {1}", DateTime.Now, RemoteIpEndPoint);
TraceEventType result;
if (log.Contains("|"))
{
var type = log.Split('|')[];
log = log.Substring(type.Length + );
if (System.Enum.TryParse<TraceEventType>(type, out result))
{
if (result == TraceEventType.Error)
Console.ForegroundColor = ConsoleColor.Red;
else if (result == TraceEventType.Warning)
Console.ForegroundColor = ConsoleColor.Yellow;
else if (result == TraceEventType.Information)
Console.ForegroundColor = ConsoleColor.Green;
}
}
Console.WriteLine(log);
Console.WriteLine("");
Console.ForegroundColor = ConsoleColor.White;
}
52 }
web.config
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="UdpTraceListener" type="UdpTraceListener" initializeData="8888"></add>
</listeners>
</trace>
</system.diagnostics>
如果需要记录全局的错误的话 需要配置Global 的Application_Error
Global
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Trace.TraceInformation("Application_Start"); } void Application_End(object sender, EventArgs e)
{
Trace.TraceInformation("Application_End");
// 在应用程序关闭时运行的代码 } void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
Trace.TraceError(string.Format("message:{0}\r\ntargetClass:{1}\r\nstackTrace:{2}\r\n", ex.Message, ex.TargetSite.DeclaringType.FullName,ex.StackTrace));
// 在出现未处理的错误时运行的代码 }
}
在其它任何需要调试的地方调用 以下方法即可
Windows Service WCF使用方法基本上差不多 在app.config里面做同样的配置
目前没有实现高级筛选功能
【原创】基于UDP广播的局域网Web Window Service日志跟踪小工具的更多相关文章
- TCPIP协议编程:基于UDP协议的局域网聊天工具的研发
任务目标 聊天器采用客户端/服务器(C/S)模式: 客户端利用UDP与服务器相连,客户端与客户端之间通过UDP相互通信: 服务器端具有服务器端口设置维护客户端个人信息,记录客户端状态,分配账号等: 客 ...
- 基于UDP传输协议局域网文件接收软件设计 Java版
网路传输主要的两大协议为TCP/IP协议和UDP协议,本文主要介绍基于UDP传输的一个小软件分享,针对于Java网络初学者是一个很好的练笔,大家可以参考进行相关的联系,但愿能够帮助到大家. 话不多说, ...
- Web进行压力测试的小工具
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测 ...
- [原创] 小而美 | Mac上鲜为人知,但极大提升效率的小工具
热爱收集实用又好用的软件,工具类软件不在多,发挥作用,提高效率最重要~推荐几个压箱底的藏货 一.Noizio -自然而然的白噪声,专注工作 Noizio是一款OS X 下的白噪音应用,可以让自己觉着是 ...
- 基于Xposed Hook实现的Android App的协议算法分析小工具-CryptoFucker
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80962121 在进行Android应用的网络协议分析的时候,不可避免涉及到网络传 ...
- 通过UDP广播实现Android局域网Peer Discovering
本文是对个人笔记中内容的整理,部分代码及图片来自互联网,由于不好找到原始出处,所以未加注明. 如有痛感,联系删除. 本文将介绍以下知识点: TCP与UDP的区别: 单播.多播.广播: Java中实现U ...
- Android基于UDP的局域网聊天通信
代码地址如下:http://www.demodashi.com/demo/12057.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1. 开发环境 1.1 开发工具 ...
- Android 通过局域网udp广播自动建立socket连接
Android开发中经常会用到socket通讯.由于项目需要,最近研究了一下这方面的知识. 需求是想通过wifi实现android移动设备和android平台的电视之间的文件传输与控制. 毫无疑问这中 ...
- UDP广播 与 TCP客户端 --服务端
随着倒计时的响声,自觉无心工作,只想为祖国庆生. 最近有遇到过这样一个问题,将摄像头识别的行人,车辆实时显示在客户端中.有提供接口,会以Json的数据的形式将实时将识别的对象进行Post提交.所以我们 ...
随机推荐
- [JS学习笔记]Event对象
写在前面 学习和总结JS时会伴随性的生成一些dome,其中包含一些动态输出的结果和标注. 之前通过鸡贼的办法实现了在博客中执行JS,但很多时候需要一张干净的页面编写dome,所以尝试通过一些在线的JS ...
- selenium webdriver入门
写在前面:最近在研究UI自动化测试的过程中,发现公司里通常用的是AutomanX框架,而这个框架实际上是基于selenium webdriver框架的,所以在编写测试用例时,很多语法都是直接使用sel ...
- Scikit-Learn:开源的机器学习Python模块(转载)
摘要: scikit-learn是一个用于机器学习的Python模块,其具有操作简单.效率高.无访问限制.BSD开源协议等等特征,在机器学习这一块是比较受欢迎的. scikit-learn是一个用于机 ...
- [置顶]
Android Shape一些新玩法?
敏少咨讯: 1.生活琐事篇 最近由于公司赶项目所以偷懒了,博客没有及时更新,还请小伙伴们手下留情啊!最近发生了很多趣事,就在今天我们学校退书籍费,这可把我开心的哈哈!无缘无故又有钱了,嘿嘿,刚好五一出 ...
- c++ 霍夫变换检测直线
通常这是一幅边缘图像,比如来自 Canny算子.cv:: Houghlines函数的输出是cV::Vec2f向量,每个元素都是一对代表检测到的直线的浮点数(p,0).在下例中我们首先应用 Canny算 ...
- struct 字节对齐详解
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问, ...
- (六)HTML5立方体动画设置
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HihoCoder1620: 股票价格3 (单调队列 or DP)
股票价格3 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在关注股票,为了计算股票可能的盈利,他获取了一只股票最近N天的价格A1~AN. 小Hi想知道,对于第 ...
- ActionContextCleanUp作用
延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除. 为了使用WebWork,我们只需要 ...
- Django json处理
转自:http://www.gowhich.com/blog/423 1, 发往浏览器端 前端:jQuery发送GET请求,并解析json数据. url = "http://example. ...