CN109508246A - 日志记录方法、系统和计算机可读存储介质 - Google Patents

日志记录方法、系统和计算机可读存储介质 Download PDF

Info

Publication number
CN109508246A
CN109508246A CN201810658383.XA CN201810658383A CN109508246A CN 109508246 A CN109508246 A CN 109508246A CN 201810658383 A CN201810658383 A CN 201810658383A CN 109508246 A CN109508246 A CN 109508246A
Authority
CN
China
Prior art keywords
log
business process
data
daily record
length
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
Application number
CN201810658383.XA
Other languages
English (en)
Inventor
徐波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD
Multi Benefit Network Co Ltd
Guangzhou Duoyi Network Co Ltd
Original Assignee
GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD
Multi Benefit Network Co Ltd
Guangzhou Duoyi Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD, Multi Benefit Network Co Ltd, Guangzhou Duoyi Network Co Ltd filed Critical GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD
Priority to CN201810658383.XA priority Critical patent/CN109508246A/zh
Publication of CN109508246A publication Critical patent/CN109508246A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种日志记录方法、系统和计算机可读存储介质;日志记录方法包括:当业务进程产生日志时,将日志数据写入到业务进程的唯一标识符对应的共享内存,以使日志进程可以从共享内存中获取日志数据并根据业务进程的日志根目录确定对应路径以将日志数据写入硬盘文件中;其中,每一业务进程设有唯一对应的唯一标识符,每一唯一标识符对应一共享内存,业务进程已预先加载管理内存块和与唯一标识符对应的共享内存,且管理内存块写有业务进程的业务进程信息,业务进程信息包括唯一标识符和日志根目录。本发明解决了硬盘读写对业务性能的影响,且日志系统可靠性高。

Description

日志记录方法、系统和计算机可读存储介质
技术领域
本发明涉及软件开发领域,尤其涉及日志记录方法、系统和计算机可读存储介质。
背景技术
在后台系统中,通常我们都需要日志系统来记录系统的运行状态,关键操作的执行记录。有了日志系统之后,就可以通过日志系统来检测系统的运行状况、统计各种信息、记录错误信息;一旦发生宕机,也可以通过日志系统记录的信息对数据进行恢复。
现有技术通常直接在业务进程中通过写硬盘这种低效的方式实现。这样会造成整个业务系统的性能的降低。还有一种方式是将写日志的功能独立到专门一个日志进程,然后业务进程通过socket(网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)的方法将日志信息发送到日志进程,从而规避了硬盘读写对业务性能的影响,但同时带来问题:日志的传送依赖于socket,数据的传递需要时间,如果在传输过程中,日志进程或者业务进程宕机了,传送中的日志信息可能会丢失,即无法保证日志系统的可靠性。
发明内容
本发明实施例提供一种日志记录方法、系统和计算机可读存储介质,能够有效保证日志系统的可靠性。
本发明一实施例提供一种日志记录方法,适用于业务进程,每一所述业务进程设有唯一对应的唯一标识符,每一所述唯一标识符对应一共享内存,所述日志记录方法包括:
当产生日志时,获取相应的日志数据;
将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存;
其中,所述业务进程已预先加载管理内存块和与所述唯一标识符对应的共享内存,且所述管理内存块写有所述业务进程的业务进程信息,所述业务进程信息包括所述唯一标识符和日志根目录。
进一步的,所述加载管理内存块和与所述唯一标识符对应的共享内存包括:
响应所述业务进程启动时,判断是否存在管理内存块,若是,则加载所述管理内存块,所述管理内存块已写入所述业务进程信息;若否,则创建管理内存块并进行加载,且将对应的业务进程信息写入所述管理内存块;
根据所述唯一标识符判断是否存在对应的共享内存,若是,则根据所述唯一标识符加载对应的所述共享内存,若否,则根据所述唯一标识符创建对应的共享内存并进行加载。
进一步的,所述共享内存为一环形缓冲区,则所述将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存包括:
读取所述环形缓冲区的写入指针;
若所述写入指针和所述日志数据的数据长度的总和小于或等于所述环形缓冲区的最大存储值,则以所述写入指针所指地址为起点写入所述日志数据,并移动所述写入指针到写入的所述日志数据的末尾位置;
若所述写入指针和所述日志数据的数据长度的总和大于所述环形缓冲区的最大存储值,则:
计算所述写入指针到所述环形缓冲区的末位地址之间的剩余空间的长度;并,
根据所述剩余空间的长度切分所述日志数据,得到前半部分数据和后半部分数据,所述前半部分数据的长度与所述剩余空间的长度相等;并,
在所述剩余空间中写入所述前半部分数据,从所述环形缓冲区的起始地址为起点写入所述后半部分数据,且移动所述写入指针到写入的所述后半部分数据的末尾位置。
进一步的,所述日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;
所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度。
相应的,本发明另一实施例还提供一种日志记录方法,适用于日志进程,包括:
遍历所述管理内存块的每一业务进程信息,并对于每一当前访问的业务进程信息,执行下述日志记录步骤:
读取所述当前访问的业务进程信息中包括的唯一标识符和日志根目录;
加载与所述唯一标识符对应的共享内存;
读取所述共享内存中的日志数据;
根据所述日志根目录确定对应所述日志数据的绝对路径;
根据所述绝对路径将所述日志数据写入对应的硬盘文件中;
其中,所述唯一标识符与所在的所述业务进程信息所对应的业务进程唯一对应,每一所述唯一标识符对应一所述共享内存。
进一步的,所述共享内存为一环形缓冲区,则所述读取所述共享内存中的日志数据包括:
读取所述环形缓冲区的读取指针和写入指针;
当所述读取指针和所述写入指针指向同一地址时,则结束当前访问的业务进程信息所对应执行的所述日志记录步骤,直接跳转至下一业务进程信息的访问;
当所述读取指针小于所述写入指针时,直接读取所述读取指针和所述写入指针之间的日志数据;
当所述读取指针大于所述写入指针时,依次读取所述读取指针到所述环形缓冲区的末位地址之间的数据以及所述环形缓冲区的起始地址到所述写入指针之间的数据,以得到所述日志数据;
读取所述日志数据后,移动所述读取指针到所述写入指针的位置。
进一步的,所述读取的日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;
所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度;
则所述根据所述日志根目录确定对应所述日志数据的绝对路径,以及根据所述绝对路径将所述日志数据写入对应的硬盘文件中具体包括:
S1、读取所述日志数据中前两所述固定长度的数据,得到当前的所述日志数据流的所述日志文件名长度和所述日志文件内容长度;
S2、根据述日志文件名长度和所述日志文件内容长度获取所述日志文件名和所述日志文件内容;
S3、基于当前的所述日志数据流读取对应的日志文件名,从所述日志根目录中确定日志文件名对应所述日志数据流的绝对路径;
S4、根据所述绝对路径将当前的所述日志数据流写入对应的硬盘文件中;
S5、判断所述日志数据中是否还存在待处理的数据,若是,则跳转至步骤S1,若否,则结束所述将所述日志数据写入对应的硬盘文件。
相应的,本发明另一实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行本发明任一实施例提供的日志记录方法。
相应的,本发明另一实施例还提供一种日志记录系统,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本发明任一实施所述的日志记录方法。
与现有技术相比,本发明实施例所提供的一种日志记录方法、系统及计算机可读存储介质装置,将日志系统独立成一个进程,解决了硬盘读写对业务性能的影响;共享内存是一个最高效的进程间传递数据的方法,日志进程和业务进程间通过共享内存来传递数据,有效的提高了系统性能,同时,每一业务进程对应一共享内存,避免了数据传递时的相互干扰;而且在日志进程或者业务进程意外退出时,共享内存的数据也不会丢失,可以在下次启动进程时继续处理,从而保证了系统的可靠性。
附图说明
图1是本发明实施例1提供的一种日志记录方法的流程示意图;
图2是适用于本发明任一实施例所提供的日志记录方法所适用的系统的结构示意图;
图3是环形缓冲区的结构示意图;
图4是日志数据流的示例图;
图5是本发明实施例2提供的一种日志记录方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例1提供的一种日志记录方法的流程示意图,适用于业务进程,每一所述业务进程设有唯一对应的唯一标识符,每一所述唯一标识符对应一共享内存,所述日志记录方法包括:
S11、当产生日志时,获取相应的日志数据;
S12、将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存;以使日志进程可以从共享内存中获取所述日志数据并写入硬盘文件中;
其中,所述业务进程已预先加载管理内存块和与所述唯一标识符对应的共享内存,且所述管理内存块写有所述业务进程的业务进程信息,所述业务进程信息包括所述唯一标识符和日志根目录。
通过唯一标识符,业务进程与共享内存一一对应,即每一共享内存只对应一业务进程,避免多个业务进程同时写一共享内存,导致写入数据混乱;如图2的示例:业务进程A对应的共享内存a,业务进程B对应共享内存b,业务进程B对应共享内存b,业务进程C对应共享内存c,每一业务进程所产生日志数据存储至与其唯一对应的共享内存中。
在进一步的实施方式中,所述加载管理内存块和与所述唯一标识符对应的共享内存的一种具体实施方式,包括:
S101、响应所述业务进程启动时,判断是否存在管理内存块,若是,则加载所述管理内存块,所述管理内存块已写入所述业务进程信息;若否,则创建管理内存块并进行加载,且将对应的业务进程信息写入所述管理内存块;
S102、根据所述唯一标识符判断是否存在对应的共享内存,若是,则根据所述唯一标识符加载对应的所述共享内存,若否,则根据所述唯一标识符创建对应的共享内存并进行加载。
上述加载管理内存块和共享内存通常在业务进程启动时则实现自动加载。系统初始化启动时,各个业务进程会尝试加载管理内存块时,通常是多个业务进程共用一管理内存块,管理内存块用于存储一些管理信息,当发现不存在管理内存块时,则创建管理内存块,创建后,业务进程会将自己的至少包括唯一标识符和日志根目录的业务进程信息写入到管理内存块里。这里可能出现多个进程同时写同个内存块的情况,可以通过采用锁或者原子操作的方式来保证数据安全。
进一步的,参见图3,所述共享内存为一环形缓冲区,即A0,A1,A2,……An,其中A0为首位地址,An为末位地址,当数据存储一直至An后则调整至A0开始储存时,如图3中的虚线箭头所示,以避免数据溢出;环形缓冲区设有写入指针和读取指针,因为读写日志的操作是单生产者单消费者的形式,所以共享内存用环形缓存区的方式,可以达到极高的读写效率。则所述将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存包括:
S121、读取所述环形缓冲区的写入指针;
S122、若所述写入指针和所述日志数据的数据长度的总和小于或等于所述环形缓冲区的最大存储值n(即环形缓冲区的总大小),说明此时写入指针+数据长度超过缓冲区总大小了,则以所述写入指针所指地址为起点写入所述日志数据,并移动所述写入指针到写入的所述日志数据的末尾位置;
S123、若所述写入指针和所述日志数据的数据长度的总和大于所述环形缓冲区的最大存储值,则执行如下步骤S1231~S1233:
S1231、计算所述写入指针到所述环形缓冲区的末位地址之间的剩余空间的长度,即(n-写入指针);并,
S1232、根据所述剩余空间的长度切分所述日志数据,得到前半部分数据和后半部分数据,所述前半部分数据的长度与所述剩余空间的长度相等,后半部分数据的长度为(日志数据的数据长度-前半部分数据的长度);并,
S1233、在所述剩余空间中写入所述前半部分数据,从所述环形缓冲区的起始地址为起点写入所述后半部分数据,且移动所述写入指针到写入的所述后半部分数据的末尾位置。
其中,需要解释说明的是,步骤S121~123所涉及指针的大小指的是当前指针指向的地址/位置与所述环形缓冲区的首位(A0)之间所占据的存储空间的大小,如图3所示,写入指针指向A1时,读取指针指向A2时,可以认为写入指针<读取指针;那么同样可以理解的是写入指针和所述日志数据的数据长度的总和指:当前写入指针指向的地址/位置与所述环形缓冲区的首位(A0)之间所占据的存储空间加上日志数据需要存储的空间的总大小。
进一步的,所述日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度,一般为1bit;最终形成的数据长度为(1+1+文件名长度+日志内容长度)bit,长度上限为255,若有需要可以把长度类型改完2bit或者4bit,以支持更高的长度上限。参见图4示例的日志数据流的形式,第一位“7”表示日志文件名长度,第二位“7”表示日志文件内容长度;“log.txt”表示日志文件名,长度为7;“hello!!”表示日志文件内容,长度为7。
通过上述实施方式,每一业务进程对应一共享内存,业务进程将产生的日志传递至共享内存中,可以实现通过共享内存的方法将日志信息传输到日志进程,同时写日志的功能独立到专门一个日志进程,由日志进程完成日志写入硬盘文件,从而解决硬盘读写对业务性能的影响。在同机器情况下,共享内存是最快的数据传递方法,一次读写也只是一次很简单的内存操作,可以提供比socket更高的性能。另外在linux中,已分配的共享内存会一直存在系统中,利用这个特性,日志数据不会有丢失的问题。比如数据还没记录到硬盘里,日志进程意外退出了,这种情况下数据也不会丢失,下次启动日志进程或者用专门的处理脚本,则可以将数据记录下来,从而保证了系统的可靠性。
相应的,参见图5,图5是本发明实施例2提供的一种日志记录方法的步骤流程图,适用于日志进程,本实施例对应适用于将实施例1中业务进程产生的日志数据进行硬盘写入,日志进程、业务进程和共享内存的具体结构可以参考图2所示,本实施例未详细叙述的内容也可以参考上述实施例1,本实施例包括下述主要步骤:
S20、遍历所述管理内存块的每一业务进程信息,并对于每一当前访问的业务进程信息,执行下述日志记录步骤:
S21、读取所述当前访问的业务进程信息中包括的唯一标识符和日志根目录;
S22、加载与所述唯一标识符对应的共享内存;
S23、读取所述共享内存中的日志数据;
S24、根据所述日志根目录确定对应所述日志数据的绝对路径;
S25、根据所述绝对路径将所述日志数据写入对应的硬盘文件中;
其中,所述唯一标识符与所在的所述业务进程信息所对应的业务进程唯一对应,每一所述唯一标识符对应一所述共享内存。
本实施例基于从管理内存块依次读取每一业务进程信息,对于当前读取的业务进程信息,确定其唯一标识符和日志根目录,并根据其唯一标识符确定对应的共享内存,从而获取日志数据,并依据日志根目录确定日志数据的绝对路径,从而根据该绝对路径将所述日志数据写入对应的硬盘文件中,完成当前读取的业务进程的日志记录,并跳转至下一业务进程信息的读取以及日志记录处理。
进一步的,所述共享内存为一环形缓冲区,则步骤S23中读取所述共享内存中的日志数据包括:
S231、读取所述环形缓冲区的读取指针和写入指针;
S232、当所述读取指针和所述写入指针指向同一地址时,则结束当前访问的业务进程信息所对应执行的所述日志记录步骤,直接跳转至下一业务进程信息的访问;
S233、当所述读取指针小于所述写入指针时,则为数据在写入时未发生循环的情况,直接读取所述读取指针和所述写入指针之间的日志数据;
S234、当所述读取指针大于所述写入指针时,则为数据在写入时发生循环的情况,依次读取所述读取指针到所述环形缓冲区的末位地址之间的数据以及所述环形缓冲区的起始地址到所述写入指针之间的数据,两部分组合起来,以得到所述日志数据。
S235、执行完步骤S233或步骤S234后,移动所述读取指针到所述写入指针的位置。
进一步的,所述读取的日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度,一般为1bit;最终形成的数据长度为(1+1+文件名长度+日志内容长度)bit,长度上限为255,若有需要可以把长度类型改完2bit或者4bit,以支持更高的长度上限。参见图4示例的日志数据流的形式,第一位“7”表示日志文件名长度,第二位“7”表示日志文件内容长度;“log.txt”表示日志文件名,长度为7;“hello!!”表示日志文件内容,长度为7。
则步骤S24~S25中所述根据所述日志根目录确定对应所述日志数据的绝对路径,以及根据所述绝对路径将所述日志数据写入对应的硬盘文件具体包括:
S241、读取所述日志数据中前两所述固定长度的数据,得到当前的所述日志数据流的所述日志文件名长度和所述日志文件内容长度;
S242、根据述日志文件名长度和所述日志文件内容长度获取所述日志文件名和所述日志文件内容;
S243、基于当前的所述日志数据流读取对应的日志文件名,从所述日志根目录中确定日志文件名对应所述日志数据流的绝对路径;
S251、根据所述绝对路径将当前的所述日志数据流写入对应的硬盘文件中;
S252、判断所述日志数据中是否还存在待处理的数据,若是,则跳转至步骤S243,若否,则结束所述将所述日志数据写入对应的硬盘文件。
示例,以数据长度为(1+1+文件名长度+日志内容长度)bit的日志数据流为例,首先读取数据的前1bit,获取到日志文件名的长度,再读取数据接着的前1bit,获取到日志文件内容的长度,再根据读取到的两个长度,获取文件名和日志内容。根据管理内存块中业务进程的“日志根目录”和文件名,确定文件的绝对路径,将日志写到对应的硬盘文件中,完成一条日志数据流的记录。重复上述步骤,直至所有数据处理完毕。处理完成,继续处理下个业务进程的数据。
通过上述实施方式,写日志的功能独立到专门一个日志进程,每一业务进程对应一共享内存,业务进程将产生的日志传递至共享内存中,日志进程从共享内存中获取日志信息,由日志进程完成日志写入硬盘文件,从而解决硬盘读写对业务性能的影响。在同机器情况下,共享内存是最快的数据传递方法,一次读写也只是一次很简单的内存操作,可以提供比socket更高的性能。另外在linux中,已分配的共享内存会一直存在系统中,利用这个特性,日志数据不会有丢失的问题。比如数据还没记录到硬盘里,日志进程意外退出了,这种情况下数据也不会丢失,下次启动日志进程或者用专门的处理脚本,则可以将数据记录下来,从而保证了系统的可靠性。
相应的,本发明另一实施例3还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行本发明实施例1提供的日志记录方法。实施例1提供的日志记录方法可以参照上述说明,此处不再赘述。
相应的,本发明另一实施例4还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行本发明实施例2提供的日志记录方法。实施例2提供的日志记录方法可以参照上述说明,此处不再赘述。
相应的,本发明另一实施例还提供一种日志记录系统,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述本发明实施例1所述的日志记录方法和本发明实施例2所述的日志记录方法中的步骤。例如图1和图图5所示的步骤。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述日志记录系统中的执行过程。例如,所述计算机程序执行适用于业务进程时,可以被分割成日志数据获取单元和共享内存写入单元,各模块具体功能如下:
日志数据获取单元,用于当产生日志时,获取相应的日志数据;
共享内存写入单元,用于将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存;以使日志进程可以从共享内存中获取所述日志数据并写入硬盘文件中。
又例如,所述计算机程序执行适用于日志进程时,可以被分割成如下功能模块:
遍历业务进程信息单元,用于遍历所述管理内存块的每一业务进程信息,并对于每一当前访问的业务进程信息,调取下述模块执行下述日志记录步骤;
业务进程信息读取单元,用于读取所述当前访问的业务进程信息中包括的唯一标识符和日志根目录;
加载单元,用于加载与所述唯一标识符对应的共享内存;
日志数据读取单元,用于读取所述共享内存中的日志数据;
路径确定单元,用于根据所述日志根目录确定对应所述日志数据的绝对路径;
硬盘文件写入单元,用于根据所述绝对路径将所述日志数据写入对应的硬盘文件中。
所述日志记录系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述日志记录系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是**装置/终端设备的示例,并不构成对日志记录系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述日志记录系统还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述日志记录系统的控制中心,利用各种接口和线路连接整个日志记录系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述日志记录系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所日志记录系统集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
与现有技术相比,本发明实施例所提供的一种日志记录系统,将以往的日志系统独立成一个进程,解决了硬盘读写对业务性能的影响;共享内存是一个最高效的进程间传递数据的方法,日志进程和业务进程间通过共享内存来传递数据,有效的提高了系统性能,同时,每一业务进程对应一共享内存,避免了数据传递时的相互干扰;而且在日志进程或者业务进程意外退出时,共享内存的数据也不会丢失,可以在下次启动进程时继续处理,从而保证了系统的可靠性。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (10)

1.一种日志记录方法,其特征在于,适用于业务进程,每一所述业务进程设有唯一对应的唯一标识符,每一所述唯一标识符对应一共享内存,所述日志记录方法包括:
当产生日志时,获取相应的日志数据;
将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存;
其中,所述业务进程已预先加载管理内存块和与所述唯一标识符对应的共享内存,且所述管理内存块写有所述业务进程的业务进程信息,所述业务进程信息包括所述唯一标识符和日志根目录。
2.如权利要求1所述的一种日志记录方法,其特征在于,所述加载管理内存块和与所述唯一标识符对应的共享内存包括:
响应所述业务进程启动时,判断是否存在管理内存块,若是,则加载所述管理内存块,所述管理内存块已写入所述业务进程信息;若否,则创建管理内存块并进行加载,且将对应的业务进程信息写入所述管理内存块;
根据所述唯一标识符判断是否存在对应的共享内存,若是,则根据所述唯一标识符加载对应的所述共享内存,若否,则根据所述唯一标识符创建对应的共享内存并进行加载。
3.如权利要求1所述的一种日志记录方法,其特征在于,所述共享内存为一环形缓冲区,则所述将所述日志数据写入到所述业务进程的唯一标识符对应的共享内存包括:
读取所述环形缓冲区的写入指针;
若所述写入指针和所述日志数据的数据长度的总和小于或等于所述环形缓冲区的最大存储值,则以所述写入指针所指地址为起点写入所述日志数据,并移动所述写入指针到写入的所述日志数据的末尾位置;
若所述写入指针和所述日志数据的数据长度的总和大于所述环形缓冲区的最大存储值,则:
计算所述写入指针到所述环形缓冲区的末位地址之间的剩余空间的长度;并,
根据所述剩余空间的长度切分所述日志数据,得到前半部分数据和后半部分数据,所述前半部分数据的长度与所述剩余空间的长度相等;并,
在所述剩余空间中写入所述前半部分数据,从所述环形缓冲区的起始地址为起点写入所述后半部分数据,且移动所述写入指针到写入的所述后半部分数据的末尾位置。
4.如权利要求1所述的一种日志记录方法,其特征在于,所述日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;
所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度。
5.一种日志记录方法,其特征在于,适用于日志进程,包括:
遍历所述管理内存块的每一业务进程信息,并对于每一当前访问的业务进程信息,执行下述日志记录步骤:
读取所述当前访问的业务进程信息中包括的唯一标识符和日志根目录;
加载与所述唯一标识符对应的共享内存;
读取所述共享内存中的日志数据;
根据所述日志根目录确定对应所述日志数据的绝对路径;
根据所述绝对路径将所述日志数据写入对应的硬盘文件中;
其中,所述唯一标识符与所在的所述业务进程信息所对应的业务进程唯一对应,每一所述唯一标识符对应一所述共享内存。
6.如权利要求4所述的一种日志记录方法,其特征在于,所述共享内存为一环形缓冲区,则所述读取所述共享内存中的日志数据包括:
读取所述环形缓冲区的读取指针和写入指针;
当所述读取指针和所述写入指针指向同一地址时,则结束当前访问的业务进程信息所对应执行的所述日志记录步骤,直接跳转至下一业务进程信息的访问;
当所述读取指针小于所述写入指针时,直接读取所述读取指针和所述写入指针之间的日志数据;
当所述读取指针大于所述写入指针时,依次读取所述读取指针到所述环形缓冲区的末位地址之间的数据以及所述环形缓冲区的起始地址到所述写入指针之间的数据,以得到所述日志数据;
读取所述日志数据后,移动所述读取指针到所述写入指针的位置。
7.如权利要求4所述的一种日志记录方法,其特征在于,所述读取的日志数据包括一条或多条日志数据流,每一所述日志数据流包括日志文件名长度、日志文件内容长度、日志文件名和日志文件内容;
所述日志文件名长度、所述日志文件内容长度、所述日志文件名和所述日志文件内容处理为二进制数据流以形成所述日志数据流;且所述日志文件名长度和所述日志文件内容长度均为固定长度;
则所述根据所述日志根目录确定对应所述日志数据的绝对路径,以及根据所述绝对路径将所述日志数据写入对应的硬盘文件中具体包括:
S1、读取所述日志数据中前两所述固定长度的数据,得到当前的所述日志数据流的所述日志文件名长度和所述日志文件内容长度;
S2、根据述日志文件名长度和所述日志文件内容长度获取所述日志文件名和所述日志文件内容;
S3、基于当前的所述日志数据流读取对应的日志文件名,从所述日志根目录中确定日志文件名对应所述日志数据流的绝对路径;
S4、根据所述绝对路径将当前的所述日志数据流写入对应的硬盘文件中;
S5、判断所述日志数据中是否还存在待处理的数据,若是,则跳转至步骤S1,若否,则结束所述将所述日志数据写入对应的硬盘文件。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1~4中任意一项所述的日志记录方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求5~7中任意一项所述的日志记录方法。
10.一种日志记录系统,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~4任一项所述的一种日志记录方法和如权利要求5~7任一项所述的一种日志记录方法。
CN201810658383.XA 2018-06-25 2018-06-25 日志记录方法、系统和计算机可读存储介质 Pending CN109508246A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810658383.XA CN109508246A (zh) 2018-06-25 2018-06-25 日志记录方法、系统和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810658383.XA CN109508246A (zh) 2018-06-25 2018-06-25 日志记录方法、系统和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN109508246A true CN109508246A (zh) 2019-03-22

Family

ID=65745438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810658383.XA Pending CN109508246A (zh) 2018-06-25 2018-06-25 日志记录方法、系统和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109508246A (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262999A (zh) * 2019-06-03 2019-09-20 北京一览群智数据科技有限责任公司 一种自动化数据流转和数据处理方法、共享文件服务器
CN110750372A (zh) * 2019-10-16 2020-02-04 深圳技威时代科技有限公司 基于共享内存的日志系统及日志管理方法
CN111309403A (zh) * 2019-12-18 2020-06-19 上海金融期货信息技术有限公司 一种应用层延时数据异步打点采集组件
CN111459764A (zh) * 2020-04-09 2020-07-28 江苏盛海智能科技有限公司 一种日志管理方法及终端
CN111563017A (zh) * 2020-04-28 2020-08-21 北京字节跳动网络技术有限公司 数据处理方法及装置
CN111699479A (zh) * 2019-06-20 2020-09-22 深圳市大疆创新科技有限公司 日志处理方法、设备及计算机可读存储介质
CN111782622A (zh) * 2020-09-04 2020-10-16 阿里云计算有限公司 日志处理方法、装置、服务器及存储介质
CN111796902A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111796901A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111813630A (zh) * 2020-07-14 2020-10-23 深圳市友杰智新科技有限公司 收集日志信息的方法、装置和计算机设备
CN112306383A (zh) * 2019-08-02 2021-02-02 华为技术有限公司 执行作业的方法、计算节点、管理节点及计算设备
CN113254232A (zh) * 2021-06-01 2021-08-13 苏州浪潮智能科技有限公司 软件模块化方法、系统、装置、设备及计算机存储介质
CN113407414A (zh) * 2021-06-24 2021-09-17 厦门科灿信息技术有限公司 程序运行监测方法、装置、终端及存储介质
CN113672572A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法
CN113722188A (zh) * 2021-09-15 2021-11-30 京东科技信息技术有限公司 日志服务系统及日志记录的处理方法
CN113760578A (zh) * 2021-08-28 2021-12-07 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN113778833A (zh) * 2021-09-29 2021-12-10 中国银行股份有限公司 异步日志处理方法及装置
CN118012732A (zh) * 2024-04-08 2024-05-10 合众新能源汽车股份有限公司 一种日志管理方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567248A (zh) * 2003-07-01 2005-01-19 华为技术有限公司 应用程序日志记录方法及系统
US20100179941A1 (en) * 2008-12-10 2010-07-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
CN102340489A (zh) * 2010-07-20 2012-02-01 阿里巴巴集团控股有限公司 一种服务器之间的数据传输方法和服务器
CN102891873A (zh) * 2011-07-21 2013-01-23 腾讯科技(深圳)有限公司 一种存储日志数据的方法及日志数据存储系统
CN107196848A (zh) * 2017-05-09 2017-09-22 腾讯科技(深圳)有限公司 消息推送方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567248A (zh) * 2003-07-01 2005-01-19 华为技术有限公司 应用程序日志记录方法及系统
US20100179941A1 (en) * 2008-12-10 2010-07-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
CN102340489A (zh) * 2010-07-20 2012-02-01 阿里巴巴集团控股有限公司 一种服务器之间的数据传输方法和服务器
CN102891873A (zh) * 2011-07-21 2013-01-23 腾讯科技(深圳)有限公司 一种存储日志数据的方法及日志数据存储系统
CN107196848A (zh) * 2017-05-09 2017-09-22 腾讯科技(深圳)有限公司 消息推送方法及装置

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111796902A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111796902B (zh) * 2019-04-08 2024-03-19 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111796901A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN110262999A (zh) * 2019-06-03 2019-09-20 北京一览群智数据科技有限责任公司 一种自动化数据流转和数据处理方法、共享文件服务器
WO2020252724A1 (zh) * 2019-06-20 2020-12-24 深圳市大疆创新科技有限公司 日志处理方法、设备及计算机可读存储介质
CN111699479A (zh) * 2019-06-20 2020-09-22 深圳市大疆创新科技有限公司 日志处理方法、设备及计算机可读存储介质
CN112306383B (zh) * 2019-08-02 2023-04-11 华为技术有限公司 执行作业的方法、计算节点、管理节点及计算设备
CN112306383A (zh) * 2019-08-02 2021-02-02 华为技术有限公司 执行作业的方法、计算节点、管理节点及计算设备
CN110750372B (zh) * 2019-10-16 2024-05-14 深圳技威时代科技有限公司 基于共享内存的日志系统及日志管理方法
CN110750372A (zh) * 2019-10-16 2020-02-04 深圳技威时代科技有限公司 基于共享内存的日志系统及日志管理方法
CN111309403A (zh) * 2019-12-18 2020-06-19 上海金融期货信息技术有限公司 一种应用层延时数据异步打点采集组件
CN111309403B (zh) * 2019-12-18 2023-05-12 上海金融期货信息技术有限公司 一种应用层延时数据异步打点采集组件
CN111459764A (zh) * 2020-04-09 2020-07-28 江苏盛海智能科技有限公司 一种日志管理方法及终端
CN111459764B (zh) * 2020-04-09 2023-12-29 江苏盛海智能科技有限公司 一种日志管理方法及终端
CN111563017A (zh) * 2020-04-28 2020-08-21 北京字节跳动网络技术有限公司 数据处理方法及装置
CN111813630A (zh) * 2020-07-14 2020-10-23 深圳市友杰智新科技有限公司 收集日志信息的方法、装置和计算机设备
CN111782622A (zh) * 2020-09-04 2020-10-16 阿里云计算有限公司 日志处理方法、装置、服务器及存储介质
CN113254232A (zh) * 2021-06-01 2021-08-13 苏州浪潮智能科技有限公司 软件模块化方法、系统、装置、设备及计算机存储介质
CN113407414A (zh) * 2021-06-24 2021-09-17 厦门科灿信息技术有限公司 程序运行监测方法、装置、终端及存储介质
CN113760578B (zh) * 2021-08-28 2022-04-19 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN113760578A (zh) * 2021-08-28 2021-12-07 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN113672572B (zh) * 2021-08-28 2024-02-09 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法
CN113672572A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法
CN113722188A (zh) * 2021-09-15 2021-11-30 京东科技信息技术有限公司 日志服务系统及日志记录的处理方法
CN113778833A (zh) * 2021-09-29 2021-12-10 中国银行股份有限公司 异步日志处理方法及装置
CN118012732A (zh) * 2024-04-08 2024-05-10 合众新能源汽车股份有限公司 一种日志管理方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN109508246A (zh) 日志记录方法、系统和计算机可读存储介质
US20200265009A1 (en) Blockchain-based data migration method and apparatus
AU2019295818A1 (en) Block chain-based data processing method and device
US8683122B2 (en) Storage system
CN109522314B (zh) 基于区块链的数据归档方法及终端设备
US20140115098A1 (en) Methods, systems, and media for stored content distribution and access
CN103152390A (zh) 分布式存储系统的节点配置方法、装置、节点及系统
CN111416825A (zh) 线程间无锁日志管理方法和系统、终端、存储介质
CN103688561A (zh) 许可管理装置、许可管理系统、许可管理方法及程序
US8683121B2 (en) Storage system
CN103888424A (zh) 集群式数据加密系统及其数据处理方法
CN113885797B (zh) 一种数据存储方法、装置、设备及存储介质
CN111444216A (zh) 一种基于中心化块链式账本的数据块删除方法
CN112202834A (zh) 一种数据处理方法、数据处理装置及节点服务器
EP4209919A1 (en) Data deduplication method, node, and computer readable storage medium
CN111752941B (zh) 一种数据存储、访问方法、装置、服务器及存储介质
CN115037472B (zh) 基于双层dag共识机制的交易处理方法及系统、服务设备
CN102299961A (zh) Femto设备实现网络资源共享方法及Femto设备
CN109491807A (zh) 一种数据交换方法、装置和系统
CN110866380A (zh) 一种填写信息字段内容的方法、终端
CN108833477A (zh) 基于共享内存的消息传输方法、系统和装置
CN108287793A (zh) 响应消息的缓冲方法及服务器
CN116701452A (zh) 数据处理方法、相关设备、存储介质及程序产品
CN110716923B (zh) 数据处理方法、装置、节点设备及存储介质
CN108845895B (zh) 基于虚拟磁盘文件的流式增量备份方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190322

RJ01 Rejection of invention patent application after publication