CN1567248A - 应用程序日志记录方法及系统 - Google Patents
应用程序日志记录方法及系统 Download PDFInfo
- Publication number
- CN1567248A CN1567248A CN 03145553 CN03145553A CN1567248A CN 1567248 A CN1567248 A CN 1567248A CN 03145553 CN03145553 CN 03145553 CN 03145553 A CN03145553 A CN 03145553A CN 1567248 A CN1567248 A CN 1567248A
- Authority
- CN
- China
- Prior art keywords
- log
- content
- write
- journal file
- daily record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种应用程序日志记录方法,该方法是:将应用程序产生的日志内容写入一共享内存区;然后将该共享内存区的日志内容写入到指定的日志文件中。本发明还公开了一种日志服务系统。本发明利用进程间通讯技术将原来频繁的磁盘I/O操作大大降低,达到既能进行日志的详细记录,又能保持较低的资源占用率,为服务类型的应用程序提供了一个完善的日志解决方案。
Description
技术领域
本发明涉及服务类型应用程序的维护技术,特别涉及一种应用程序日志记录方法及系统。
背景技术
在一个服务类型的应用程序中,详细而及时的日志记录是相当重要的,因为系统长时间处于无人守护状态,在出现问题时,当时的日志记录很有可能就是唯一的跟踪定位问题的依据和线索,特别是对于一个在客户现场运行的大型系统来说,日志更显重要。
目前的服务类型的应用程序都具备日志记录功能,普遍采用的方法就是写文件,即每写一次日志的过程就是打开文件、写文件、关闭文件的过程。
在现有的PC系统中,磁盘I/O操作是一个瓶颈,而频繁的写文件操作将会耗去很大部分的CPU资源。特别是在电信系统的软件系统当中,由于是电信级应用,可能会同时并发处理上百个呼叫,系统正常运行时会有多达几百个线程,这就意味着同时可能有几百个写日志的操作发生,每写一次日志的过程就是打开文件、写文件、关闭文件的过程。系统为了能够跟踪到各个通道的工作情况,每个线程都会很频繁的记录日志,同时为了对日志信息进行区分,不同通道不同类型的信息都保存在不同的日志文件当中。在系统用户达到设计上限时,系统的CPU占用率达到90%以上,而其中记录日志占用的CPU时间就在50%以上。由此可见,服务系统产生的日志量相当大,并且是在客户现场运行,其结果是在真正的运行期间,应用程序往往无法启动日志记录功能,这样日志的意义也就丧失了。因此上述的日志记录方法虽然简单,但致使系统短时间内生成大批的日志,进而严重影响应用程序的性能。
发明内容
针对现有技术的缺点,本发明提供一种应用程序日志记录方法,该方法能极大的降低磁盘I/O的操作,降低对CPU资源的占用率。
本发明的另一目的在于提供一种日志服务系统。
本发明的方法包括步骤:
A、将应用程序产生的日志内容写入一共享内存区;
B、将该共享内存区的日志内容写入到指定的日志文件中。
根据上述方法:
步骤B包括步骤:
B1、将共享存储区的日志内容读出至一缓冲区;
B2、根据缓冲区中已存储日志内容的容量或者定时地将缓冲区中的日志内容写入到指定的日志文件中。
将日志内容写入共享存储区和从该共享存储区读取日志内容通过互斥锁实现同步。
定时对共享存储区进行扫描,以发现该共享存储区是否有新的日志内容,如有则将其读出至缓冲区。
当缓冲区的日志内容容量小于所述的一预定值且客户服务端已停止写日志时,将日志内容写入日志文件。
所述的共享存储区和缓冲区采用环状存储区的方式,即写完存储区末尾的存储单元后指针将指向该存储区的首地址单元。
一种日志服务系统,至少具有包括处理器和存储器的应用服务器,该应用服务器还包括:
向产生日志信息的应用程序模块提供接口来将日志信息写入一共享内存区的客户端模块;
将共享内存区的日志信息读出并写入指定日志文件的服务端模块;
存储日志信息的日志文件模块;
以及对所述日志文件的内容进行管理的日志管理器模块。
一种日志服务系统,具有包括处理器和存储器的应用服务器和文件服务器,该应用文件服务器还包括:
向应用程序模块提供接口以便将所述日志信息写入一共享内存区的客户端模块;
将共享内存区的日志信息读出并写入文件服务器中的服务端模块;
所述文件服务器还包括:
存储日志信息的日志文件模块;
以及对所述日志文件的内容进行管理的日志管理器模块。
本发明利用进程间通讯技术将原来频繁的磁盘I/O操作大大降低,达到既能进行日志的详细记录,又能保持较低的资源占用率,为服务类型的应用程序提供了一个完善的日志解决方案。实际运行过程中,日志系统对CPU占用基本可以忽略,解决了该应用程序长期以来由于日志记录导致CPU占用较高的问题,有效提高了系统的可维护性及稳定性。
附图说明
图1为本发明的系统结构示意图;
图2为应用服务器的结构示意图;
图3为本发明的原理图示意图。
具体实施方式
参考图1,本发明的系统包括文件服务器和与该文件服务器连接的应用服务器。应用服务器和文件服务器为包括处理器和存储器等部件的计算机装置。应用服务器产生日志信息,文件服务器保存日志,并可运行日志管理器对日志进行查询管理。对于日志信息量不大的系统,也可不用文件服务器,而将日志信息直接保存于应用服务器上。
参阅图2所示,应用服务器除了包括处理器和存储器等构成计算机装置的部件外(图中未示出),还包括客户端模块和服务端模块。在没有专门的文件服务器时,应用服务器还包括日志管理器模块和日志文件。
应用程序模块用于执行应用任务并产生日志信息;客户端模块向应用程序模块提供接口以便将产生的日志信息写入一共享内存区;服务端模块将共享内存区的日志信息读出并写入应用服务器或文件服务器中指定日志文件;日志管理器模块对日志文件的内容进行查看和拆分。日志客户端和服务端采用C/S结构。
参阅图3,日志客户端以动态库的形式提供接口给应用程序写入日志信息,而日志服务端负责将日志信息写入到指定的日志文件,客户端和服务端之间通过一块共享内存实现应用程序进程与日志服务进程之间的消息传递。
日志客户端采用动态库的形式向用户应用程序提供写日志信息的接口。用户需要加入日志功能或者需要对原有的日志记录方式进行修改时,应将客户端提供的接口函数嵌入到应用程序中去。主要完成的工作有:
(1)初始化:获取共享内存的操作权;
(2)写入日志信息:将日志信息按用户自定义的格式写入共享内存;
(3)退出:清空服务器端对该客户联接的一些记录。
日志服务端是一个独立运行的后台进程。启动时,它将建立一个命名的共享内存区,并且不断扫描该共享内存区,看是否有日志信息可以读取。
日志服务端运行后进行的主要工作有:
(1)创建命名共享内存;
(2)以多线程的方式扫描共享内存,查看是否有数据可以读取;
(3)将共享内存中的数据写入日志缓冲区;
(4)将缓冲区中的数据写到指定日志文件中,日志文件格式如下:20020506080102_1.log,日志文件个数可由用户指定,并采用循环覆盖的方式
应用程序通过通过调用日志客户端的接口,将日志内容写入服务端所创建的共享内存区。日志服务器监视到共享内存有数据则将内容暂时写到缓冲区,之后写到指定的文件中。共享内存和缓冲区都采用环状缓冲区的方式实现。生成的日志文件还可以利用用户界面进行浏览和拆分(拆分原则为:将不同的模块拆成不同的目录,不同的通道生成不同的文件)。
由于在同一台应用服务器上可能有不同的应用程序使用日志工具,为了达到同步,采用互斥锁对共享内存区进行保护,即客户端将日志内容写入共享内存和服务端从共享内存读取数据是通过共享内存互斥锁来实现同步的。
在本发明中,日志管理器其实是一个查看日志文件内容的查看工具(可运行在应用服务器和文件服务器上)。该工具提供友好的用户界面,通过用户界面查看日志工具生成的日志文件内容。日志管理器还能进行日志的拆分,拆分后的日志文件与VP台原有的日志文件相同。
另外能够通过模块的添加和删除配置,适用于不同系统记录日志信息格式上的差异。
以下是应用程序写日志的一次主要过程:
(1)应用程序先调用日志客户端的初始化函数LogInit,进行一些必要的初始化操作(每个客户端只需初始化一次)。
(2)在写日志时,应用程序调用客户端提供的WriteLotToSHM函数将日志信息写入服务端开辟的共享内存中,不同的客户端在写日志时,通过获取一个共享内存区的互斥锁达到同步,每个客户端最多等待50ms的时间。当待写的日志信息长度要超过该共享内存区时,写共享内存的指针将指向该内存区的开始处,即从头开始写日志信息,实现循环写入。
(3)服务端每50ms扫描一次共享内存区,看是否存在日志信息,存在日志信息则将其拷贝到缓冲区中,当缓冲区中的日志信息积累到0.2MB时,服务端通过事件通知另一个写文件的线程,该线程负责将缓冲区中的内容写入日志文件,对于缓冲区中不足0.2MB而客户端已经停止写日志时,服务端将在3秒钟之后将剩余内容写入到文件。
本发明利用进程间通讯技术,将应用程序产生的日志先写入一共享内存,然后定时或定量的将该内存中的日志信息进行一次磁盘I/O操作,解决了原来每个应用程序一产生日志就进行一次磁盘I/O操作的问题,从而可大大降低磁盘I/O操作的频率,达到既能进行日志的详细记录,又能保持较低的资源占用率。
Claims (11)
1、一种应用程序日志记录方法,其特征在于该方法包括步骤:
A、将应用程序产生的日志内容写入一共享内存区;
B、将该共享内存区的日志内容写入到指定的日志文件中。
2、如权利要求1所述的方法,其特征在于:步骤B包括步骤:
B1、将共享存储区的日志内容读出至一缓冲区;
B2、根据缓冲区中已存储日志内容的容量或者定时地将缓冲区中的日志内容写入到指定的日志文件中。
3、如权利要求1或2所述的方法,其特征在于:将日志内容写入共享存储区和从该共享存储区读取日志内容通过互斥锁实现同步。
4、如权利要求2所述的方法,其特征在于:定时对共享存储区进行扫描,以发现该共享存储区是否有新的日志内容,如有则将其读出至缓冲区。
5、如权利要求2或4所述的方法,其特征在于:当缓冲区的日志内容容量小于所述的一预定值且客户服务端已停止写日志时,将日志内容写入日志文件。
6、如权利要求1、2或4所述的方法,其特征在于:所述的共享存储区和缓冲区采用环状存储区的方式,即写完存储区末尾的存储单元后指针将指向该存储区的首地址单元。
7、如权利要求1所述的方法,其特征在于:
步骤A中,通过调用日志客户端接口将日志内容写入共享内存区;
步骤B中,由日志服务端将共享存储区的日志内容写入到指定的日志文件中;
所述日志客户端和日志服务端采用客户/服务器结构。
8、如权利要求7所述的方法,其特征在于:共享内存区由所述日志服务端预先建立。
9、如权利要求1所述的方法,其特征在于:通过日志管理器对所述日志文件的内容进行查看和拆分。
10、一种日志服务系统,具有包括处理器和存储器的应用服务器,其特征在于所述应用服务器还包括:
向产生日志信息的应用程序模块提供接口来将日志信息写入一共享内存区的客户端模块;
将共享内存区的日志信息读出并写入指定日志文件的服务端模块;
存储日志信息的日志文件模块;
以及对所述日志文件的内容进行管理的日志管理器模块。
11、一种日志服务系统,具有包括处理器和存储器的应用服务器和文件服务器,其特征在于所述应用文件服务器还包括:
向应用程序模块提供接口以便将所述日志信息写入一共享内存区的客户端模块;
将共享内存区的日志信息读出并写入文件服务器中的服务端模块;
所述文件服务器还包括:
存储日志信息的日志文件模块;
以及对所述日志文件的内容进行管理的日志管理器模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03145553 CN1567248A (zh) | 2003-07-01 | 2003-07-01 | 应用程序日志记录方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03145553 CN1567248A (zh) | 2003-07-01 | 2003-07-01 | 应用程序日志记录方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1567248A true CN1567248A (zh) | 2005-01-19 |
Family
ID=34471442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03145553 Pending CN1567248A (zh) | 2003-07-01 | 2003-07-01 | 应用程序日志记录方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1567248A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306148A (zh) * | 2011-03-18 | 2012-01-04 | 北京神州数码思特奇信息技术股份有限公司 | 一种共享内存数据库访问方法 |
CN102508765A (zh) * | 2011-11-17 | 2012-06-20 | 深圳市中兴移动通信有限公司 | 一种通过进程间通信实现软件日志实时监控的方法 |
CN102609484A (zh) * | 2012-01-19 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种通用系统日志管理方法 |
CN102891873A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 一种存储日志数据的方法及日志数据存储系统 |
CN103064905A (zh) * | 2012-12-18 | 2013-04-24 | 武汉华中数控股份有限公司 | 一种数控系统的日志管理方法 |
CN103345411A (zh) * | 2013-07-09 | 2013-10-09 | 北京奇虎科技有限公司 | 卸载应用程序的方法及装置 |
CN103984621A (zh) * | 2014-04-01 | 2014-08-13 | 广州杰赛科技股份有限公司 | 日志分离方法和系统 |
CN104038806A (zh) * | 2014-06-11 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种应用界面显示方法及机顶盒 |
CN104050074A (zh) * | 2013-03-12 | 2014-09-17 | 中国银联股份有限公司 | 一种在系统中异步记录日志的方法和装置 |
CN104537074A (zh) * | 2014-12-31 | 2015-04-22 | 天津南大通用数据技术股份有限公司 | 一种提高数据库系统写日志性能的方法 |
CN105224256A (zh) * | 2015-10-13 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储系统 |
CN105955972A (zh) * | 2016-02-01 | 2016-09-21 | 上海华测导航技术股份有限公司 | 一种接收机日志管理系统及方法 |
CN106648931A (zh) * | 2016-12-12 | 2017-05-10 | 贵阳朗玛信息技术股份有限公司 | 一种日志信息记录的方法及装置 |
CN106681651A (zh) * | 2016-05-05 | 2017-05-17 | 安徽南瑞继远电网技术有限公司 | 一种两级缓冲机制的日志管理系统设计方法 |
CN108255674A (zh) * | 2017-12-31 | 2018-07-06 | 广东欧珀移动通信有限公司 | 多进程浏览器进程日志收集方法、装置以及移动终端 |
CN108377292A (zh) * | 2018-01-30 | 2018-08-07 | 努比亚技术有限公司 | 解决内存泄露的方法、终端、服务器及计算机存储介质 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN113672572A (zh) * | 2021-08-28 | 2021-11-19 | 芯河半导体科技(无锡)有限公司 | 一种嵌入式linux系统syslog的日志存储方法 |
-
2003
- 2003-07-01 CN CN 03145553 patent/CN1567248A/zh active Pending
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306148A (zh) * | 2011-03-18 | 2012-01-04 | 北京神州数码思特奇信息技术股份有限公司 | 一种共享内存数据库访问方法 |
CN102891873A (zh) * | 2011-07-21 | 2013-01-23 | 腾讯科技(深圳)有限公司 | 一种存储日志数据的方法及日志数据存储系统 |
CN102508765A (zh) * | 2011-11-17 | 2012-06-20 | 深圳市中兴移动通信有限公司 | 一种通过进程间通信实现软件日志实时监控的方法 |
CN102609484A (zh) * | 2012-01-19 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种通用系统日志管理方法 |
CN103064905A (zh) * | 2012-12-18 | 2013-04-24 | 武汉华中数控股份有限公司 | 一种数控系统的日志管理方法 |
CN103064905B (zh) * | 2012-12-18 | 2016-04-20 | 武汉华中数控股份有限公司 | 一种数控系统的日志管理方法 |
CN104050074A (zh) * | 2013-03-12 | 2014-09-17 | 中国银联股份有限公司 | 一种在系统中异步记录日志的方法和装置 |
CN103345411A (zh) * | 2013-07-09 | 2013-10-09 | 北京奇虎科技有限公司 | 卸载应用程序的方法及装置 |
CN103984621B (zh) * | 2014-04-01 | 2017-08-11 | 广州杰赛科技股份有限公司 | 日志分离方法和系统 |
CN103984621A (zh) * | 2014-04-01 | 2014-08-13 | 广州杰赛科技股份有限公司 | 日志分离方法和系统 |
CN104038806A (zh) * | 2014-06-11 | 2014-09-10 | 深圳市九洲电器有限公司 | 一种应用界面显示方法及机顶盒 |
CN104038806B (zh) * | 2014-06-11 | 2017-09-29 | 深圳市九洲电器有限公司 | 一种应用界面显示方法及机顶盒 |
CN104537074A (zh) * | 2014-12-31 | 2015-04-22 | 天津南大通用数据技术股份有限公司 | 一种提高数据库系统写日志性能的方法 |
CN105224256A (zh) * | 2015-10-13 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储系统 |
CN105955972A (zh) * | 2016-02-01 | 2016-09-21 | 上海华测导航技术股份有限公司 | 一种接收机日志管理系统及方法 |
CN106681651A (zh) * | 2016-05-05 | 2017-05-17 | 安徽南瑞继远电网技术有限公司 | 一种两级缓冲机制的日志管理系统设计方法 |
CN106648931A (zh) * | 2016-12-12 | 2017-05-10 | 贵阳朗玛信息技术股份有限公司 | 一种日志信息记录的方法及装置 |
CN108255674A (zh) * | 2017-12-31 | 2018-07-06 | 广东欧珀移动通信有限公司 | 多进程浏览器进程日志收集方法、装置以及移动终端 |
CN108377292A (zh) * | 2018-01-30 | 2018-08-07 | 努比亚技术有限公司 | 解决内存泄露的方法、终端、服务器及计算机存储介质 |
CN108377292B (zh) * | 2018-01-30 | 2020-11-10 | 努比亚技术有限公司 | 解决内存泄露的方法、终端、服务器及计算机存储介质 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN113672572A (zh) * | 2021-08-28 | 2021-11-19 | 芯河半导体科技(无锡)有限公司 | 一种嵌入式linux系统syslog的日志存储方法 |
CN113672572B (zh) * | 2021-08-28 | 2024-02-09 | 芯河半导体科技(无锡)有限公司 | 一种嵌入式linux系统syslog的日志存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1567248A (zh) | 应用程序日志记录方法及系统 | |
US8185880B2 (en) | Optimizing heap memory usage | |
CN1147812C (zh) | 具有至少两个主机数据库和一个远程数据库的数据库系统以及同步这样的数据库的方法 | |
CN1320483C (zh) | 用于在多节点环境中实施日志处理的系统和方法 | |
CN1079552C (zh) | 采用稀疏文件的实时数据迁移系统和方法 | |
CN100345143C (zh) | 数据处理方法和装置 | |
CN1288575C (zh) | 用于管理客户与服务器之间的连接的系统和方法 | |
CN1361489A (zh) | 一种日志信息的自动循环存储方法和系统 | |
CN111241049B (zh) | 一种基于微服务架构分布式操作日志实现系统 | |
CN101079036A (zh) | 一种海量文件的存储方法及系统 | |
CN1975655A (zh) | 用于管理对存储装置的访问的方法和设备 | |
CN1282111C (zh) | 一种跨平台数据库查询方法 | |
CN100347705C (zh) | 一种合并文件的方法 | |
US8880478B2 (en) | Scan-free archiving | |
CN101030135A (zh) | 一种在共享内存中存储c++对象的方法及装置 | |
CN1896957A (zh) | 一种定位虚拟操作系统内存泄漏的方法 | |
CN1908937A (zh) | 一种闪存中的flash文件的管理方法及系统 | |
CN1234074C (zh) | 基于Internet的文件镜像方法 | |
CN1946035A (zh) | 一种网元数据配置管理的方法及网元 | |
CN1203427C (zh) | 一种具有tcp连接容错功能的负载平衡调度方法 | |
CN1257463C (zh) | 一种用于自动监控图像管理与通信的系统 | |
CN1178948A (zh) | 文件格式转换方法 | |
CN1764905A (zh) | 借助于偏移量在共享存储器中寻址数据的方法 | |
CN115576899A (zh) | 构建索引的方法和装置以及文件查找方法和装置 | |
CN101059758A (zh) | 屏幕转换程序生成方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |