C# 程序A发送Log记录给程序B,程序B处理和分析Log记录
C# 程序A发送Log记录给程序B,程序B处理和分析Log记录
关键字:C# ;Log记录 ;在线Log记录;Socket;httplistener
一、常用场景
1、 APP开发,在真机或者虚拟机上面运行由H5或者ApiCloud的程序,或者调试别人写的程序的时候,往往不能看到一段代码执行后的输出结果是什么。作为一个天天跟后台打交道的人,浏览器尤其是习惯了Google的F12的console.log,更是希望APP调试也能够实时查看输出。

2、开发一个.Net的网站,或者Java的网站,在调试的时候,写了很多的System.console.writeline代码,写了很多System.out.println 代码,但是网站一发布,除了写在文件/数据库里面的日志记录,一旦出现问题,定位不了那段代码出错了。把出错写在文件中,又担心文件太大,占据磁盘空间,想有一种可以打开就记录Log,关闭就不记录Log的工具。

2、 其他类似的情况,一是程序是在一个黑盒子中开发的,或者是不想把无用的日志写入磁盘占据空间,你需要一款打开即用,关闭即停的工具
总结:我把他取名为:VisualTools,一个Log记录的可视化展示工具。
二、基本架构流程设计图:

如上图所示:Visual Debug Tool 提供两种方式,一种是应用程序通过直接发送Log消息给Visual Debug Tool,另一种是应用程序先发送GET请求给HTTP服务器,有HTTP服务器中转发送Log消息给Visual Tool,这两种方式,个人推荐第二种,第二种的可扩展性和兼容性都不错,只要应用程序模拟发送GET请求,并将数据放到参数中就可以做到。
第二种方式有一个好处,就是,不是同一台机器上的程序,可以通过访问HTTP 服务器的方式,去记录Log,这种方式尤其对于APP段输出字段值,有很高的便利性。
三、软件介绍:
1、 HTTP Server迷你的HTTP工具,用来代理转发Log消息:

应用程序通过GET方式访问:http://127.0.0.1:8081?pid=&msgLevel=&msg=&other=
的方式,进行发送Log消息。
Tips:
JS调用方式:
function GETLogPage(pid,msgLevel,msg,otherInfo){
$.get("http://127.0.0.1:8081?pid="+encodeURIComponent(pid)+"&msgLevel="+encodeURIComponent(msgLevel)+"&msg="+encodeURIComponent(msg)+"&other="+encodeURIComponent(otherInfo), function(response,status,xhr){
console.log(response);
});
}
C# Http的Get调用方式,自行百度。
C#调用方式,直接发送给Visual Debug Tool:(相关类,以开源,后附开源地址)
ToolsLib.MSGEntity msgentity = new ToolsLib.MSGEntity();
msgentity.msgLevel = msgLevel;
msgentity.msg = msg;
msgentity.timeStr = timeStr;
msgentity.pidIndentity = pidIndentity;
msgentity.other = other;
string ret = ToolsLib.SendMsgToBS.Send(msgentity);//发送实体
2、 Visual Debug Tool 工具

注意:HTTP Server迷你的HTTP工具 和 Visual Debug Tool 必须要运行在同一台服务器端。如果要使用其他电脑访问,可以在Visual Debug Tool里面设置该程序为服务器,其他机器通过选择连接服务器,进行连接。
如果您想要源代码,联系QQ:1097712982
程序地址(不含源码):https://files.cnblogs.com/files/lijuanfei/VisualDebugTool.rar
C# 程序A发送Log记录给程序B,程序B处理和分析Log记录的更多相关文章
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
[Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...
- 微信小程序如何发送订阅消息,正确姿势来了,建议收藏!
小程序订阅消息公测已经有些日子,今天以世界上最好的语言(PHP)为例,说一下如何发送订阅消息. 1.订阅消息 其实如果用过模板消息的话,改用订阅消息挺简单的,看一下官方文档稍加摸索就能使用. 但是对于 ...
- AM335X的应用程序自启动流程以及U盘更新应用程序记录
在AM335X的SD卡更新系统学习记录中最后更新完系统后,以后运行应用程序都会从EMMC中取出Linux系统运行.接着介绍Linux系统是怎么自己启动我们编写的应用程序的. 1.在AM335X的SD卡 ...
- Winform 程序嵌入WPF程序 并发送消息
废话不多说,先看解决方案目录 WindowsFormsDemo是主程序,WpfApp是嵌入的WPF程序,先看WPF程序,程序默认启动的页面是MainWindow.xaml,这里注释掉App.xaml里 ...
- 微信小程序中发送模版消息注意事项
在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...
- 安装程序配置服务器失败。参考服务器错误日志和C:\windows\sqlstp.log 了解更多信息
重装sql经常遇到2个问题 1,以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机. 删除C:\Program Files\Microsoft SQL Serve ...
- C#实现在应用程序间发送消息的方法示例
本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
对照<第一行代码——Android>进行学习,第五章中说到广播包的相关知识,前面获取广播等程序例程都可以跑的通,但是在5.3.2节中,程序A发送自定义广播,并接收自定义广播,同时程序B也接 ...
- 原创:【微信小程序】发送消息模板教程(后台以PHP示例)
1.本教程对外开放,未经博主同意,禁止转载. 2.准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 3.因为调用微信发送模板的接口是:https ...
随机推荐
- linux比较两个文件的差异
1. vimdiff $ vimdiff in.txt out.txt 垂直打开: vimdiff point.c point-a.c 水平打开: vimdiff -o point ...
- STM32 外部中断
1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...
- Linux系统nat模式联网——VM是12 系统是cantos7
>点击还原默认设置,然后确定 >选择Vmnet8,VMnet信息自动选中NAT模式 记住子网IP和子网掩码 >点击NAT设置,记住网关IP >点击DHCP.记住IP范围 > ...
- nmap扫描时的2个小经验
http://pnig0s1992.blog.51cto.com/393390/367558/ 1.我肉鸡的环境是Windows XP sp3,在使用nmap扫描外网的时候,提示我 pcap_open ...
- NSObject之二
前面一章我们整理了NSObject类,这一章我们来看看NSObject协议的内容. NSObject协议提供了一组方法作为Objective-C对象的基础.其实我们对照一个NSObject类和NSOb ...
- jquery选择器总结2
1.JQuery的概念 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用一些简单的代码实现一些复杂的JS效果. 2.JQuery实现了 代码的分离 不用再网页 ...
- 调试 FastAdmin 出现 Failed to parse SourceMap
看到群里有人说在调试 FastAdmin出现 SourceMap 出错. 报错信息为: Failed to parse SourceMap 来自 Karson 说明: 这个文件是用于匹配原有less中 ...
- hybrid app 知识点
WebView能加载显示网页,可以将其视为一个浏览器. Android系统中,叫做 WebView ios系统中,新版是 WKWebView,旧版是 UIWebView Native App 和 We ...
- position:relative与position:absolute 区别
relative:相对于它本身原来的位置进行偏移(配合 right left bottom top属性进行偏移) 他偏移会空出来一些空白 其余的html元素不会填充这些空白 absolute:相对于同 ...
- yii2 rbac权限管理学习笔记
下面介绍一个 yii2 的 Rbac 权限管理设置,闲话少说,直接上代码, 1.首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main ...