The invention provides a log output method and device based on double threads. The method includes: receiving a call request log, the log request in log text data stored in the thread in the circular queue; the log text data stored in the circular queue thread write blocking queue, blocking queue is a memory buffer capacity; monitoring of the blocking queue and write operations, if listening to write or not blocking queue achieve the capacity threshold, the trigger input and output thread log, the blocking queue all current log text data one-time log file. Thus, the memory buffer data to a log file of low frequency, reduce the number of threads used for log processing, I/O system pressure is small, can redirect log with less CPU and thread resources, improve the response performance of application of UI interaction.
【技术实现步骤摘要】
基于双线程的日志输出方法及装置
本专利技术涉及通信
,尤其涉及一种基于双线程的日志输出方法及装置。
技术介绍
开发人员了解应用程序(Application,简称:APP)的运行状况,其中一种常规的方法是通过日志,将日志进行重定向,输出至指定的日志文件进行统一收集。现有技术中,在日志输出的时候,启动一个线程,在该线程中打开日志文件,接着把日志数据写入到日志文件中,最后关闭日志文件,结束线程。因此,每写一条日志,就需要经历一次日志文件的流程“打开文件句柄--写入数据—关闭文件句柄”。但是,当大量连续的日志输出时,通过上述日志输出方法,容易导致读写文件频繁,给系统输入输出(I/O)带来压力,且处理日志使用的线程数过多,会消耗移动设备宝贵的线程资源,降低CPU分配给业务处理的时间片。
技术实现思路
本专利技术提供一种基于双线程的日志输出方法及装置,以解决现有日志输出方法易导致读写文件频繁,系统I/O压力大的问题。第一方面,本专利技术提供一种基于双线程的日志输出方法,包括:接收日志调用请求,将所述日志调用请求中的日志文本数据存储在线程循环队列中;将所述线程循环队列中存储的日志文本数据写入阻塞队列,所述阻塞队列为内存缓冲区;监听所述阻塞队列的容量和写入操作,若监听到所述阻塞队列没有写入操作或者达到容量阈值,则触发日志的输入输出线程,将所述阻塞队列中当前所有的日志文本数据一次性写入日志文件。进一步地,所述将所述阻塞队列中当前所有的日志文本数据一次性写入日志文件,包括:打开日志文件句柄,从所述阻塞队列中依次获取当前所有的日志文本数据,依次写入每一日志文本数据到所述日志文 ...
【技术保护点】
一种基于双线程的日志输出方法,其特征在于,包括:接收日志调用请求,将所述日志调用请求中的日志文本数据存储在线程循环队列中;将所述线程循环队列中存储的日志文本数据写入阻塞队列,所述阻塞队列为内存缓冲区;监听所述阻塞队列的容量和写入操作,若监听到所述阻塞队列没有写入操作或者达到容量阈值,则触发日志的输入输出线程,将所述阻塞队列中当前所有的日志文本数据一次性写入日志文件。
【技术特征摘要】
1.一种基于双线程的日志输出方法,其特征在于,包括:接收日志调用请求,将所述日志调用请求中的日志文本数据存储在线程循环队列中;将所述线程循环队列中存储的日志文本数据写入阻塞队列,所述阻塞队列为内存缓冲区;监听所述阻塞队列的容量和写入操作,若监听到所述阻塞队列没有写入操作或者达到容量阈值,则触发日志的输入输出线程,将所述阻塞队列中当前所有的日志文本数据一次性写入日志文件。2.根据权利要求1所述的方法,其特征在于,所述将所述阻塞队列中当前所有的日志文本数据一次性写入日志文件,包括:打开日志文件句柄,从所述阻塞队列中依次获取当前所有的日志文本数据,依次写入每一日志文本数据到所述日志文件中,当前所有的日志文本数据写入所述日志文件结束时,关闭所述日志文件句柄。3.根据权利要求1或2所述的方法,其特征在于,所述接收日志调用请求之前,还包括:设置所述线程循环队列的线程优先级低于业务处理的优先级。4.根据权利要求1或2所述的方法,其特征在于,所述监听到所述阻塞队列没有写入操作,包括:监听到所述阻塞队列在预设时间内没有写入操作。5....
【专利技术属性】
技术研发人员:吴朝彬,
申请(专利权)人:北京五八信息技术有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。