日志系统控制装置及其控制方法与流程

文档序号:12751772阅读:271来源:国知局
日志系统控制装置及其控制方法与流程

本发明涉及日志系统控制领域,具体涉及一种日志系统控制装置及其控制方法。



背景技术:

在软件开发过程中,开发人员经常会在软件代码中增加Log(日志)信息。Log信息通常是帮助开发人员定位软件中出现的问题的具体原因。目前大多数软件的设计的Log日志是程序员本地开发时调试时候添加的,一旦软件开发完成,软件外发后相关的Log状态就无法进行更改了。也就是说将无法继续控制日志系统,更不能远程获取客户端的日志文件。若后期客户端产生什么异常,开发人员由于不能快速拿到相应的调试日志文件,从而不能对异常问题进行及时处理。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种能够在软件外发后,通过云端和客户端进行交互,使云端能够继续获取客户端的日志文件的日志系统控制装置。

为达到以上目的,本发明采取的技术方案是:一种日志系统控制装置,包括云端和客户端,所述云端和客户端通过套接字建立长连接,所述客户端发送心跳包至所述云端保持所述长连接,所述客户端包括日志系统,所述云端通过所述套接字发送CMD命令至所述日志系统,控制所述日志系统打开或关闭所述日志系统的日志信息的输出、控制所述日志系统将所述日志信息写入到文件形成日志文件,以及控制所述日志系统将所述日志文件上传至所述云端。

在上述技术方案的基础上,所述CMD命令包括打开所述日志系统的日志信息的输出的命令CMD_OPEN_LOG、关闭所述日志系统的日志信息的输出的命令CMD_CLOSE_LOG、将所述日志信息写入到文件的命令CMD_WRITE_FILE,以及将所述日志文件上传至所述云端的命令CMD_SEND_SERVER。

在上述技术方案的基础上,所述日志系统设有日志控制器,所述日志系统收到所述CMD_OPEN_LOG时,所述日志控制器设置全局变量开关isDebug为true;所述日志系统收到所述CMD_CLOSE_LOG时,所述日志控制器设置全局变量开关isDebug为false;所述日志系统收到所述CMD_WRITE_FILE时,所述日志控制器设置全局变量开关writeToFile为true;所述日志系统收到所述CMD_SEND_SERVER时,所述日志控制器搜索所述客户端的本地磁盘是否存在日志文件,若是,所述日志控制器上传日志文件至所述云端,若否,所述日志控制器告知所述云端所述客户端的本地磁盘不存在日志文件。

在上述技术方案的基础上,所述日志系统还设有控制台,所述CMD命令还包括将所述日志信息写入到所述控制台的命令CMD_WRITE_CONSOLE以及将所述日志信息同时写入到所述文件和控制台的命令CMD_WRITE_BOTH;所述日志系统收到所述CMD_WRITE_CONSOLE时,所述日志控制器设置全局变量开关writeToConsole为true;所述日志系统收到所述CMD_WRITE_BOTH时,所述日志控制器同时设置所述全局变量开关writeToConsole和全局变量开关writeToFile为true。

在上述技术方案的基础上,所述客户端还设有第三方推送软件开发工具包,所述第三方推送软件开发工具包分别与所述云端和客户端相连。

与此同时,本发明还提供一种能够在软件外发后,通过云端和客户端进行交互,使云端能够继续获取客户端的日志文件的控制方法。

为达到以上目的,本发明采取的技术方案是:一种利用上述日志系统控制装置控制日志系统的方法,包括以下步骤:

将云端和客户端通过套接字建立长连接,且客户端定时发送心跳包至云端保持长连接;

云端发送CMD命令至客户端的日志系统,控制日志系统打开日志系统的日志信息的输出,然后控制日志系统将日志信息写入到文件形成日志文件,最后控制日志系统将日志文件上传至云端。

在上述技术方案的基础上,所述云端发送CMD_OPEN_LOG、CMD_WRITE_FILE和CMD_SEND_SERVER至日志系统,CMD_OPEN_LOG命令驱使日志控制器设置全局变量开关isDebug为true,控制日志系统输出日志信息;CMD_WRITE_FILE命令驱使日志控制器设置全局变量开关writeToFile为true,控制日志系统将日志信息写入到文件形成日志文件;CMD_SEND_SERVER命令驱使日志控制器搜索客户端的本地磁盘是否存在日志文件,若是,日志控制器上传日志文件至云端,若否,日志控制器告知云端客户端的本地磁盘不存在日志文件。

在上述技术方案的基础上,所述云端发送CMD_WRITE_CONSOLE至日志系统,CMD_WRITE_CONSOLE命令驱使日志控制器设置全局变量开关writeToConsole为true,控制日志系统将日志信息写入到控制台。

在上述技术方案的基础上,所述云端发送CMD_OPEN_LOG、CMD_WRITE_BOTH和CMD_SEND_SERVER至日志系统,CMD_OPEN_LOG命令驱日志控制器设置全局变量开关isDebug为true,控制日志系统输出日志信息;CMD_WRITE_BOTH命令驱使日志控制器同时设置全局变量开关writeToConsole和全局变量开关writeToFile为true,控制日志系统将日志信息同时写入到控制台和文件;CMD_SEND_SERVER命令驱使日志控制器搜索客户端的本地磁盘是否存在日志文件,若是,日志控制器上传日志文件至云端,若否,日志控制器告知云端客户端的本地磁盘不存在日志文件。

在上述技术方案的基础上,所述云端发送包含所述CMD命令的推送命令至第三方推送软件开发工具包,所述第三方推送软件开发工具包收到所述推送命令后唤醒或者启动所述客户端,所述客户端启动后与所述云端通过套接字建立长连接,且客户端继续定时发送心跳包至云端保持长连接,然后处理所述云端发送的所述CMD命令,由所述云端继续对所述日志系统进行控制。

与现有技术相比,本发明的优点在于:

(1)本发明中的日志系统控制装置包括云端和客户端,云端和客户端通过套接字建立长连接,客户端发送心跳包至云端保持长连接。从而可以很好的保障云端和客户端的连接不断开。

(2)本发明中的云端发送CMD命令至日志系统,控制日志系统打开或关闭日志系统的日志信息的输出、控制日志系统将日志信息写入到文件形成日志文件,以及控制日志系统将所述日志文件上传至所述云端。即本发明能够在软件外发后,通过云端和客户端进行交互,使云端能够继续获取客户端的日志文件,及时处理客户端的异常问题。

(3)本发明中的客户端还设有第三方推送软件开发工具包,当客户端中套接字因为一些原因导致无法使用时,通过第三方推送软件开发工具包唤醒客户端或者拉起客户端,这样客户端启动后能够自发和云端建立连接并接受云端下发的CMD命令,然后去控制日志控制器执行相应的功能。

附图说明

图1为本发明的日志系统控制装置的示意图;

图2为本发明中第三方推送软件开发工具包的工作原理和流程的示意图;

图3为本发明中日志系统控制装置控制日志系统的流程图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

参见图1所示,本发明提供一种日志系统控制装置,包括云端和客户端,云端和客户端通过套接字建立长连接,客户端发送心跳包至云端保持长连接。

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个套接字,并绑定到一个端口上,不同的端口对应于不同的服务。

心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送。

在本发明中,因为套接字通信中云端会轮询客户端是否发送消息,云端如果长时间没有收到客户端收到的消息,云端为了释放该客户端占用的资源会断开与客户端的连接。如果云端和客户端断开了连接,那么以后客户端就无法和云端通信,如果想要继续通信,客户端必须重新建立连接。但是建立连接的这个过程是非常耗时的,为了解决这个问题客户端可以通过发送心跳包解决。

客户端定期发送心跳包(心跳包内容携带客户端的一些基本信息,比如客户端mac地址,设备相关信息,手机号等,主要目的就是和云端进行一次通信操作),云端发现客户端定期有和自己通信,云端会认为客户端一直需要服务,此时云端不会断开与客户端的连接。故有了心跳包的传输,就能够很好的保障客户端和云端的连接不断开。

本发明中的客户端包括日志系统,云端发送CMD命令至日志系统,便可以控制日志系统打开或关闭日志系统的日志信息的输出、控制日志系统将日志信息写入到文件形成日志文件,以及控制日志系统将日志文件上传至云端。

日志系统设有日志控制器,当客户端的日志系统收到相应的CMD命令以后,客户端会通过日志控制器实现相应的功能,从而使客户端响应CMD命令动作。

日志系统还设有控制台,日志系统的日志信息可以写入到控制台,从而位于客户端的开发人员可以不需要通过云端去下载日志文件即可获得日志信息。

具体的,本发明中云端和客户端通过自定义协议进行日志系统开关控制,云端和客户端定义通信协议格式如下:

本发明中的CMD命令有如下几种,其表达含义如下:

CMD_OPEN_LOG:打开日志调试信息;

CMD_CLOSE_LOG:关闭日志调试信息;

CMD_WRITE_FILE:将日志信息写入到文件中;

CMD_WRITE_CONSOLE:将日志信息写入到控制台;

CMD_SEND_SERVER:将日志文件发送到服务器;

CMD_WRITE_BOTH:将日志信息写入到控制台同时将日志写入到文件。

当客户端的日志系统收到相应的命令以后,客户端会通过日志控制器实现相应的功能。下面针对每一个命令,日志控制器实现逻辑进行描述:

CMD_OPEN_LOG:打开日志调试信息;

1.收到该命令后,日志控制器会设置一个全局变量开关isDebug为true。isDebug是一个boolean变量,用来控制日志控制器的全局开关。其处于打开状态时才能处理所有控制命令操作,关闭状态无法处理任何操作。

2.全局变量开关isDebug为ture的时候,日志系统就会打开所有日志输出,输出日志信息。

CMD_CLOSE_LOG:关闭日志调试信息;

1.收到该命令后,日志控制器会设置一个全局变量开关isDebug为false。

2.全局变量开关isDebug为false的时候,日志系统就会关闭所有日志输出,不输出任何日志信息。

CMD_WRITE_FILE:将日志信息写入到文件中;

1.收到该命令后,日志控制器会设置一个全局变量开关writeToFile为true。writeToFile为写入文件的一个开关。开表示可以写入文件,关表示不可以写入文件。

2.全局变量开关writeToFile为ture的时候,日志系统就会默认将日志只输出到文件中,文件默认存储路径为应用文件夹下,日志信息写入到文件后便得到日志文件。

CMD_WRITE_CONSOLE:将日志信息写入到控制台;

1.收到该命令后,日志控制器会设置一个全局变量开关writeToConsole为true。writeToConsole为写入控制台的一个开关。开表示可以写入控制台,关表示不可以写入控制台。

2.全局变量开关writeToConsole为true的时候,日志系统就会将日志信息仅仅写入到控制台。

CMD_SEND_SERVER:将日志文件发送到服务器;

1.收到该命令后,日志控制器会去找客户端的本地磁盘上的日志文件,如果找到该文件就会直接上传,如果日志文件有很多个月的,默认是上传最近一个月的日志文件。

2.如果没有找到该文件,客户端就不做上传操作,回复信息给云端告知云端目前客户端没有日志文件存在。

CMD_WRITE_BOTH:将日志信息写入到控制台同时将日志信息写入到文件;

1.收到该命令后,日志控制器同时设置全局变量开关writeToConsole和全局变量开关writeToFile为true。

2.全局变量开关writeToConsole和全局变量开关writeToFile均为true后,日志信息会同时写入到控制台和文件中。

传统的软件或客户端一旦外发后,对日志系统基本就无法进行控制了,更不可能远程获取客户端的日志文件。本发明中的日志系统控制装置,其使用了心跳和长连接使得云端能够和客户端保持交互。而云端通过设计多种CMD命令的下发,使得云端对日志系统能够进行动态调配,从而达到了日志系统的多变性,后期如果客户端产生什么异常,云端能够快速拿到相应调试日志文件,对异常问题进行快速解决。

此外,如果客户端中套接字因为一些原因导致无法使用,从而断掉了云端和客户端的连接,后续云端就无法再与客户端进行通信。为了解决这一个问题,本发明中的客户端还设有第三方推送软件开发工具包(软件开发工具包,Software Development Kit),第三方推送软件开发工具包分别与云端和客户端相连。

推送最大的特点是在本地应用即使是没有启动或者没有运行的时候,依旧能够获取到云端发过来的信息。当接收到云端发过来的信息后,客户端一旦刚知道,立刻发出和云端建立套接字的请求,如果连接上,后面云端就可以正常下发CMD命令和客户端进行通信以及控制客户端日志系统的各种行为操作。

下面结合图2介绍第三方推送软件开发工具包的工作原理和流程:

云端发现客户端的套接字已经和自己断开连接了,若云端需要对客户端的日志系统进行控制,此时云端会发送一个推送命令至第三方推送软件开发工具包,该推送命令的主要功能是唤醒或者启动客户端,同时该推送命令还包含了云端下发的CMD命令等信息。

第三方推送软件开发工具包接收到云端的请求后,第三方推送软件开发工具包会立刻唤醒或者启动客户端程序,并告知客户端云端的需求。

客户端启动后,会向云端发送建立套接字连接请求。客户端和云端建立套接字连接后,仍然定时发送心跳包至云端,然后处理云端下发的CMD命令,如果需要反馈信息的将处理结果反馈给云端。当客户端和云端建立套接字连接后,云端便可继续通过套接字发送CMD命令至客户端。

在客户端上由于为了系统省电等需求,有可能会将后台的心跳连接进行断开处理,主要目的是为了保证系统功耗。心跳连接断开后会导致云端和客户端断开连接,一旦客户端和云端的连接断开,云端就无法和客户端进行任何交互。

为了解决这个问题,本发明在客户端设置了一个第三方推送软件开发工具包,由于第三方推送软件开发工具包的实现机制原因,使得该推送模块能够长期在后台存在不会被系统删除掉。所以云端能够随时和该推送模块进行通信,第三方推送软件开发工具包接收到相应的消息后,能够唤醒客户端或者拉起客户端,这样客户端启动后能够自发和云端建立连接并接受云端下发的CMD命令,然后去控制日志控制器执行相应的功能。

参见图3所示,本发明还提供一种利用上述日志系统控制装置控制日志系统的方法,包括以下步骤:

将云端和客户端通过套接字建立长连接,且客户端定时发送心跳包至云端保持长连接;

云端发送CMD命令至客户端的日志系统,控制日志系统打开日志系统的日志信息的输出,然后控制日志系统将日志信息写入到文件形成日志文件,最后控制日志系统将日志文件上传至云端。

本发明中,云端发送CMD_OPEN_LOG、CMD_WRITE_FILE和CMD_SEND_SERVER至日志系统,CMD_OPEN_LOG命令驱使日志控制器设置全局变量开关isDebug为true,控制日志系统输出日志信息。CMD_WRITE_FILE命令驱使日志控制器设置全局变量开关writeToFile为true,控制日志系统将日志信息写入到文件形成日志文件。CMD_SEND_SERVER命令驱使日志控制器搜索客户端的本地磁盘是否存在日志文件,若是,日志控制器上传日志文件至云端,若否,日志控制器告知云端客户端的本地磁盘不存在日志文件。从而实现了云端对客户端日志系统动态调配的目的。

为了方便客户端的工作人员直接获得日志信息,避免向云端发送请求来获取日志信息,本发明中的云端发送CMD_WRITE_CONSOLE至日志系统,CMD_WRITE_CONSOLE命令驱使日志控制器设置全局变量开关writeToConsole为true,控制日志系统将日志信息写入到控制台。从而客户端的工作人员可直接通过控制台获取日志信息,及时处理异常问题。

本发明也可以控制日志系统将日志信息同时写入到控制台和文件,云端发送CMD_OPEN_LOG、CMD_WRITE_BOTH和CMD_SEND_SERVER至日志系统,CMD_OPEN_LOG命令驱日志控制器设置全局变量开关isDebug为true,控制日志系统输出日志信息;CMD_WRITE_BOTH命令驱使日志控制器同时设置全局变量开关writeToConsole和全局变量开关writeToFile为true,控制日志系统将日志信息同时写入到控制台和文件;CMD_SEND_SERVER命令驱使日志控制器搜索客户端的本地磁盘是否存在日志文件,若是,日志控制器上传日志文件至云端,若否,日志控制器告知云端客户端的本地磁盘不存在日志文件。

如果客户端中套接字因为一些原因导致无法使用,本发明可以通过在客户端设置一个第三方推送软件开发工具包来解决这个问题。其具体的过程如下:

云端发送包含所述CMD命令的推送命令至第三方推送软件开发工具包;

第三方推送软件开发工具包收到推送命令后唤醒或者启动客户端;

客户端启动后与云端通过套接字建立长连接,且客户端继续定时发送心跳包至云端保持长连接,然后处理云端发送的CMD命令。

至此,客户端已经重新和云端建立好了连接,云端便可继续按照上述描述的方式继续对日志系统进行控制。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1