在调试js的时候都喜欢用console.log输出相应的运行结果或者查看变量值,以便于调试程序bug,可是程序后台代码运行的时候,本地没有问题,线上代码有问题怎么办呢,写日志是一个办法,可是有没有更直观的方式呢,时时监测代码运行情况,那么既然SingalR有时时推送的功能,我自己突发奇想想了这么个写日志的方法。

  首先,拿出之前聊天室的项目。先截一个图:

  第二,你只需要知道singalR服务地址就可以了。我写的代码如下(只是举例,各种方案不一样):

  

public static void PushLog(string message)
{
var pushUrl = "http://XXXXXXX/ChatPush/XXXXXXX";
StringBuilder msg = new StringBuilder();
msg.AppendFormat("ChatMsgId={0}", Guid.NewGuid().ToString());
msg.AppendFormat("&CvNumber={0}", );
msg.AppendFormat("&Contents={0}", message);
msg.AppendFormat("&UserPhoto={0}", "http://img1.gurucv.com/image/417c1ab3-f0ed-4080-9189-a6bb3a381ba9_per_middle.png?t=52442424-7c77-4c01-aae5-43fee8371c3f");
msg.AppendFormat("&UserName={0}", "[系统监测]");
msg.AppendFormat("&EntCvNumber={0}", );
msg.AppendFormat("&MsgTypeId={0}", );
msg.AppendFormat("&EntName={0}", "Mobile项目时时检测");
msg.AppendFormat("&groupId={0}", );
msg.AppendFormat("&AddTimeStr={0}", DateTime.Now.ToString()); var json = msg.ToString();
var result = HttpHelper.SendPost(pushUrl, json);
}

好了,大功告成,调用方式很简单了,例如,在做微信授权功能的时候,我想知道,code是否获取到,就在获取code的代码里面插上一句:

 Utils.PushLog("当前获取的code为:" + code);

那么当发布到线上的时候,你想检测某些代码的运行情况,打开客户端聊天室,就会收到系统发送过来的消息啦。

写的比较粗糙,总结一下:   

1.先用singalR搭建好服务器,(搭建方法可以参考我的另外几篇聊天室博客)界面可以简单一些,开放推送接口。例如我项目的推送接口为 http://singalR.server/chatmsg/push (举例)   

2.自己项目里写上推送方法,调用即可   

3.打开聊天界面,系统运行情况一目了然

当然,大的项目自然有很多监测方法,只是自己突然想到了这么个思路,挺有意思的哈~~

教你用SingalR实现后台开发程序运行时时检测的更多相关文章

  1. 基于gis的系统开发,程序运行出现问题 ArcGIS product not specified.You must first bind to an ArcGIS version prior to using any ArcGIS components.

    在之前初始化的时候添加下面的一行代码:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);还需要添加一个引 ...

  2. win10关闭后台应用程序进程的方法

    一)win10系统后台应用有两大特点: 1.win10系统有许多系统自带应用软件,在系统任务栏中看不到任何自带的应用程序运行 2.但通过任务管理器的进程中,可直观的看到许多非系统进程正在运行. 二)后 ...

  3. Django微信小程序后台开发教程

    本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...

  4. discuz后台开发常用函数

    showsetting()表单显示 返回值:无 参数: $setname - 指定输出标题,如:setting_basic_bbname, 自动匹配描述文字为:setting_basic_bbname ...

  5. php微信支付接口开发程序

    php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...

  6. TypeScript开发程序

    使用TypeScript开发程序 简介 TypeScript一直发展不错,我们公司在开发新功能时,考虑到程序的可维护性,使用了TypeScript编写浏览器上的程序,我们是从零开始使用TypeScri ...

  7. 对ios、android开发程序员的14条忠告

    ————————本文摘自千锋教育(http://www.mobiletrain.org/)对ios\android开发程序员的14条忠告————————— 1.不要害怕在工作中学习. 只要有电脑,就可 ...

  8. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  9. 微信小程序开发——前端如何区分小程序运行环境

    前言: 之前用vue做h5项目,对于接口请求,都是根据前端访问域名来判断运行环境,然后自动适配对应的服务器地址的.这样的好处就是在开发.测试及发布上线全程都不需要手动去改接口请求地址,只要提前配置好就 ...

随机推荐

  1. Zookeeper概念学习系列之zookeeper是什么?

    1. Zookeeper是Hadoop的分布式协调服务. 2. 分布式应用程序可以基于它,来实现同步服务,配置维护和命名服务等. 3. zookeeper可以保证数据在zookeeper集群之间的数据 ...

  2. 白话SpringCloud | 第九章:路由网关(Zuul)的使用

    前言 介绍完分布式配置中心,结合前面的文章.我们已经有了一个微服务的框架了,可以对外提供api接口服务了.但现在试想一下,在微服务框架中,每个对外服务都是独立部署的,对外的api或者服务地址都不是不尽 ...

  3. Bootstrap入门(第一天)

    一直都想认真的学习一下Bootstrap,但是由于种种原因,一直没有行动,虽然期间有使用过Bootstrap,但是都没有系统的学习过.最近工作室(学校老师的工作室)安排了一个前端任务让我跟进,主要是根 ...

  4. git获取别人远程dev分支上的代码

    我们在使用 git clone  xxx.git 下载代码的时候,获取到的只是 master上的代码 假入有个 dev 分支我们想获取上面的代码怎么办! #下载dev分支上的代码并切换到dev分支 g ...

  5. ThreadPoolExecutor(上篇)

    Java有两个线程池类:ThreadPoolExecutor和ScheduledThreadPoolExecutor,继承AbstractExecutorService类,AbstractExecut ...

  6. python 对象属性与 getattr & setattr

    Python对象的属性可以通过obj.__dict__获得,向其中添加删除元素就可以实现python对象属性的动态添加删除的效果,不过我们应该使用更加正规的getattr和setattr来进行这类操作 ...

  7. 针对 IE的 的优化

    针对 IE 的优化 有些时候,你需要对 IE 浏览器的 bug 定义一些特别的规则,这里有太多的 CSS 技巧(hacks),我只使用其中的两种方法,不 管微软在即将发布的 IE7 beta 版里是否 ...

  8. BIEE入门(三)业务模型层

    正如它的名字所示(Business Model and Mapping Layer),业务逻辑层需要把物理层的数据源以一种业务用户的视角来重新组织物理层的各个数据源(所谓的Mapping),同时在业务 ...

  9. 功能强大的系统配置工具-- Siebel Tools

    Siebel Tools 是Siebel 为其CRM产品开发人员专门提供的系统配置工具,系统的客户化修改以及系统升级控制等都是通过该工具进行配置(Configuration) .该工具直接修改Sieb ...

  10. asyncio标准库1 Hello World

    利用asyncio的event loop,编写和调度协程 coroutine [,kəuru:'ti:n] n. 协程 Simple coroutine(调用1个协程) import asyncio ...