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# HttpGet调用方式,自行百度。

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记录的更多相关文章

  1. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  2. 微信小程序如何发送订阅消息,正确姿势来了,建议收藏!

    小程序订阅消息公测已经有些日子,今天以世界上最好的语言(PHP)为例,说一下如何发送订阅消息. 1.订阅消息 其实如果用过模板消息的话,改用订阅消息挺简单的,看一下官方文档稍加摸索就能使用. 但是对于 ...

  3. AM335X的应用程序自启动流程以及U盘更新应用程序记录

    在AM335X的SD卡更新系统学习记录中最后更新完系统后,以后运行应用程序都会从EMMC中取出Linux系统运行.接着介绍Linux系统是怎么自己启动我们编写的应用程序的. 1.在AM335X的SD卡 ...

  4. Winform 程序嵌入WPF程序 并发送消息

    废话不多说,先看解决方案目录 WindowsFormsDemo是主程序,WpfApp是嵌入的WPF程序,先看WPF程序,程序默认启动的页面是MainWindow.xaml,这里注释掉App.xaml里 ...

  5. 微信小程序中发送模版消息注意事项

    在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...

  6. 安装程序配置服务器失败。参考服务器错误日志和C:\windows\sqlstp.log 了解更多信息

    重装sql经常遇到2个问题 1,以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机. 删除C:\Program Files\Microsoft SQL Serve ...

  7. C#实现在应用程序间发送消息的方法示例

    本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...

  8. MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到

    对照<第一行代码——Android>进行学习,第五章中说到广播包的相关知识,前面获取广播等程序例程都可以跑的通,但是在5.3.2节中,程序A发送自定义广播,并接收自定义广播,同时程序B也接 ...

  9. 原创:【微信小程序】发送消息模板教程(后台以PHP示例)

    1.本教程对外开放,未经博主同意,禁止转载. 2.准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 3.因为调用微信发送模板的接口是:https ...

随机推荐

  1. Windows-CreateProcess-lpsiStartInfo-STARTUPINFO-dwFlags

    dwFlags: 简单地告诉CreateProcess函数结构中哪些成员有效: STARTF_USESIZE:使用dwXSize和dwYSize STARTF_USESHOWWINDOWS: wSho ...

  2. Spring Boot(5) 集成Hibernate 日志配置

    https://blog.csdn.net/ZNG_XP/article/details/78131809 https://blog.csdn.net/u011998835/article/detai ...

  3. ES6必知必会 (五)—— Promise 对象

    Promise 对象 1.Promise对象是ES6对异步编程的一种解决方案,它有以下两个特点: Promise对象代表一个异步操作,它只有三种状态:Pending(进行中).Resolved(已完成 ...

  4. Math类的学习 java 类库 API 文档学习

  5. MySQL--REPLACE INTO更新自增列值引发的异常

    ##=====================================================================##测试环境:MySQL版本:MySQL 5.7.19复制 ...

  6. php实现cookie加密解密

    1.加密解密类 class Mcrypt { /** * 解密 * * @param string $encryptedText 已加密字符串 * @param string $key 密钥 * @r ...

  7. QString和char字符串数组之间的转换 (转)

    做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString:但是,在对串口设备进行读写时,数据使用的形 ...

  8. NOI2002银河英雄传说——带权并查集

    题目:https://www.luogu.org/problemnew/show/P1196 关键点在于存下每个点的位置. 自己糊涂的地方:位置是相对于谁的位置? 因为每次给一个原来是fa的点赋位置时 ...

  9. Microsoft Dynamics CRM 2011 如何导入组织

    一.首先备份数据库,还原数据库(前面SQL server 2008数据库的备份与还原(转)已经说明),这里就不说明了. 二.怎么删除组织? 先要在组织管理器里禁用组织,然后删除组织,再从数据库里删除. ...

  10. ncnn编译安装-20190415

    ncnn编译安装 1.git clone https://github.com/Tencent/ncnn 2.按照wiki说明来编译,根据需要,选择不同的编译方式.在ncnn/CMakeLists.t ...