CN103309858B - 一种多线程日志管理的方法及装置 - Google Patents

一种多线程日志管理的方法及装置 Download PDF

Info

Publication number
CN103309858B
CN103309858B CN201210057044.9A CN201210057044A CN103309858B CN 103309858 B CN103309858 B CN 103309858B CN 201210057044 A CN201210057044 A CN 201210057044A CN 103309858 B CN103309858 B CN 103309858B
Authority
CN
China
Prior art keywords
journal file
write
daily record
file
record object
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.)
Active
Application number
CN201210057044.9A
Other languages
English (en)
Other versions
CN103309858A (zh
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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems 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 Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201210057044.9A priority Critical patent/CN103309858B/zh
Publication of CN103309858A publication Critical patent/CN103309858A/zh
Application granted granted Critical
Publication of CN103309858B publication Critical patent/CN103309858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开一种多线程日志管理的方法及装置,涉及业务处理逻辑应用技术领域,可以避免系统等待,使系统进行实时处理,提高系统性能。本发明实施例通过获取线程写入的日志的系统文件描述符FD、写入级别和写入内容,当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中。本发明实施例提供的方案适合应用于多线程的日志管理。

Description

一种多线程日志管理的方法及装置
技术领域
本发明涉及业务处理逻辑应用技术领域,尤其涉及一种多线程日志管理的方法及装置。
背景技术
在业务处理过程中,通常多个线程同时处理,并在关键逻辑步骤将处理结果记录到日志文件中。线程为业务处理逻辑中按照一个单一的顺序控制处理流程,在单个业务处理逻辑中同时运行多个线程完成不同的工作称为多线程。日志指系统所指定对象的某些操作和其操作结果按时间有序的集合。日志对于系统监控、查询、报表和安全审计非常重要,因此,系统除了应满足基本日志管理与使用的需求外,必须进一步保证线程安全,且没有严重的性能损失。现有技术主要是通过基于竞争/占有模式的锁机制实现。
采用现有技术,在多线程环境下,为了避免日志记录错乱,可以根据配置建立或者打开日志文件时,建立全局的互斥锁。每个对象对应一个互斥锁,互斥锁用于使在任一时刻只能有一个线程访问该对象,以便保证共享数据操作的完整性。当某个线程需要写入日志时,需等待当前正在写入的线程完成并释放全局互斥锁后,获得日志文件的写入权才能完成一条日志的写入。
目前,存在对于该实现机制的改进方案,例如系统为各个线程初始化了一个单写多读的缓冲区,这个缓冲区可以是系统内存或临时建立的文件。然后各个线程需要写日志时可以先立即写入到各自的缓冲区中,不用竞争全局锁,减少了等待时间,再由专门的日志收集线程定时或轮询地将其它线程缓冲区的临时日志重新转移到系统总日志中。但实现时各个写入线程的缓存区一般需要加一把读锁,或者需要用线程条件变量维持与日志收集线程的同步,以避免收集日志时的缓冲区的同时写入,否则必须等其它线程空闲或系统停止后再收集。
然而,当采用现有技术进行日志文件操作时,会引起系统等待,导致系统实时性差,性能下降。
发明内容
本发明的实施例提供一种多线程日志管理的方法及装置,可以避免系统等待,使系统进行实时处理,提高系统性能。
为达到上述目的,本发明的实施例采用如下技术方案:
一种多线程日志管理的方法,包括:
获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中,包括:
当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
一种多线程日志管理的装置,包括:
获取单元,用于获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
日志文件写入单元,用于当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中;
所述日志文件写入单元包括:
获得模块,用于当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
日志文件写入模块,用于根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
本发明实施例提供一种多线程日志管理的方法及装置,通过获取线程写入的日志的系统文件描述符FD、写入级别和写入内容,当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中。与现有技术中进行日志文件操作时,会引起系统等待,导致系统实时性差,性能下降相比,本发明实施例提供的方案采用FD关联了日志文件,可以在多线程下无锁的日志文件写入、切换,可以避免系统等待,使系统进行实时处理,提高系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种多线程日志管理的方法的流程图;
图2为本发明实施例1提供的一种多线程日志管理的装置的框图;
图3为本发明实施例2提供的一种多线程日志管理与使用机制总体结构示意图;
图4为本发明实施例2提供的一种多线程日志管理的方法的流程图;
图5为本发明实施例2提供的创建日志文件的示意图;
图6为本发明实施例2提供的日志文件的写入的示意图;
图7为本发明实施例2提供的日志文件的切换示意图;
图8为本发明实施例2提供的一种多线程日志管理的装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种多线程日志管理的方法,如图1所示,该方法包括以下步骤:
步骤101,获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
在步骤101之前还包括主线程中的日志文件创建过程,该过程包括:
在主线程中设置日志对象的属性,所述属性包括所述日志文件的日志文件名称;
打开或新建所述日志文件名称对应的日志文件;
在主线程中设置与所述日志文件一一对应的系统文件描述符FD。
步骤102,当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中。
可选的,当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
所述当前写入时间、所述当前线程号用于统计分析日志文件中的不同日志。
可选的,根据所述FD执行日志文件的切换时,当日志文件的容量或者写入时间满足所述切换容量或切换时间时,创建新日志文件并确定所述新日志文件对应的另一文件描述符FD;更新日志对象中FD为所述另一FD,将之后日志写入所述另一FD对应的日志文件中。
本发明实施例提供一种多线程日志管理的方法,通过获取线程写入的日志的系统文件描述符FD、写入级别和写入内容,当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中。与现有技术中进行日志文件操作时,会引起系统等待,导致系统实时性差,性能下降相比,本发明实施例提供的方案采用FD关联了日志文件,可以在多线程下无锁的日志文件写入、切换,可以避免系统等待,使系统进行实时处理,提高系统性能。
本发明实施例提供一种多线程日志文件管理的装置,如图2所示,该装置包括获取单元201,日志文件写入单元202。
获取单元201,用于获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
日志文件写入单元202,用于当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中。
可选的,所述日志文件写入单元中的获得模块,用于当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
所述日志文件写入单元中的日志文件写入模块,用于根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
本发明实施例提供一种多线程日志管理的装置,通过获取单元获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;当所述写入级别大于预设级别时,日志文件写入单元将所述写入内容写入所述FD对应的日志文件中。与现有技术中进行日志文件操作时,会引起系统等待,导致系统实时性差,性能下降相比,本发明实施例提供的方案采用FD关联了日志文件,可以在多线程下无锁的日志文件写入、切换,可以避免系统等待,使系统进行实时处理,提高系统性能。
实施例2
如图3所示,本发明实施例提供一种多线程日志管理与使用机制总体结构示意图,其中,主要包括文件系统、日志管理模块和日志调用(写入)模块。文件系统、日志管理模块和日志调用(写入)模块为根据各个模块的功能进行命名,与本发明中执行多线程日志管理的方法时采用的装置中的模块不同。
文件系统,指文件系统中进行日志记录,并作为后续日志查看的文件,在文件系统中,每一个被打开的日志文件对应一个FD,通过日志文件对应的FD可以对文件进行写入、切换等操作。
日志管理模块中包括日志对象管理,日志创建,日志写入,日志切换,日志配置等模块。日志管理模块根据日志配置,通过线程安全的系统调用、延迟关闭、定时扫描等方法管理了一组日志对象,通过日志对象进行日志文件的管理。同时,日志管理模块提供了文件管理(打开、建立和关闭)、文件写入和文件扫描等文件系统接口供日志写入模块调用,以便进行日志创建、日志写入及日志切换等操作。日志切换是指根据日志配置的容量及时间,进行日志文件的新旧的更替。
日志调用(写入)模块,通过调用日志管理模块接口进行日志的写入,其中,通过调用日志管理模块接口完成注册日志、获得日志文件FD、FD日志写入和日志切换通知等操作。首先需要调用日志管理模块接口进行日志的注册,注册的目的是初始化日志对象中日志文件FD,之后日志的写入通过读取该日志对象中的FD完成。同时,日志调用(写入)模块可实现日志切换的回调接口,在日志文件被切换时该接口将被通知执行。
本发明实施例采用多线程日志管理与使用机制,提供一种多线程日志管理的方法,如图4所示,该方法包括以下步骤:
步骤401,初始化日志对象池中的日志对象,所述日志对象池中包括至少一个日志对象,并获取所述日志对象池中的一个日志对象;
初始化日志对象指分配并建立至少一个空日志对象,这些空日志对象构成日志对象池。
日志对象的属性包括:FD(FileDescriptors,文件描述符)、日志文件名称、日志文件进行切换的容量和时间,还包括日志文件最大个数、当前日志文件序号等。其中,所述FD与日志文件一一对应,当一个文件被打开后,系统会返回一个FD,通过此FD可以进行文件的读写等操作。日志文件进行切换的容量和时间用于当满足日志文件切换的预设条件时,进行日志文件切换,例如,当日志文件的容量大于预设容量时,或者日志文件已经写入的时间超过预设时间时,进行日志文件切换。
步骤402,在主线程中设置日志对象的属性,所述属性包括所述日志文件的日志文件名称;
步骤403,根据所述日志对象的属性中的日志文件名称,打开或者新建所述日志文件名称对应的日志文件;
文件系统接口根据日志文件获取日志文件对应的文件描述符FD,并将FD返回给日志管理模块,以便日志管理模块进行日志创建。
步骤404,接收所述文件系统接口发送的文件描述符FD,并在主线程中设置与所述日志文件一一对应的系统文件描述符FD。
可选的,设置日志文件的FD,所述日志文件与所述FD一一对应,以便后续进行日志写入等操作。采用FD关联了日志文件,可以在多线程下无锁的日志文件写入、切换,可以避免系统等待,使系统进行实时处理,提高系统性能。当日志文件创建完成后,该日志文件处于可写入状态。
步骤401-步骤404为创建日志文件过程,如图5所示的创建日志文件的示意图:在主线程中初始化日志对象池,为日志注册提供基础。每注册一个日志将从所述日志对象池中取出一个日志对象,根据配置设置日志对象属性,日志对象属性包括日志文件名称,写入级别,切换条件等,然后在文件系统中打开或者建立对应的日志文件,当日志文件名对应的日志文件已经存在,则打开日志文件,否则重建日志文件。最后设置FD,日志调用(写入)模块将以此FD作为后续日志文件打印的首要参数。对于每个配置的日志文件都需要执行以上注册过程,然后各个日志文件处于可写入状态。
上述操作可以只在系统初始化时在主线程中进行,所以不需要加锁。一个程序启动时,就有一个进程被操作系统创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程。
根据所述FD,即可执行多线程下日志文件的写入或者执行日志文件的切换,参见以下流程:
步骤405,获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
可选的,FD可以由日志对象的属性中获得,写入级别和写入内容通常由多线程日志管理与使用机制中的日志调用(写入)模块自行设置。
步骤406,当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
对设置的写入级别进行判断,当写入级别小于预设级别时,不进行日志写入;可选的,当写入级别大于预设级别时,获得当前写入时间和当前线程号。当前时间即为当前系统的时间,通过系统调用获得当前线程号,在多线程并行时,除主线程外,还有子线程,当主线程执行时,如果还需再创建线程,那么创建的线程为主线程的子线程,每个线程至少有一个主线程。所述当前写入时间、所述当前线程号用于统计分析日志文件中的不同日志。
步骤407,根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中;
通过FD,多个线程同时对某日志文件写入,调用线程安全的文件系统接口,底层文件系统就保证不冲突,上层不需要加锁,由于没有加解锁的延迟,所以日志写入实时性高,没有额外的性能损失。
步骤405-步骤407为日志文件的写入流程。如图6所示的日志文件的写入的示意图,日志写入模块调用日志管理模块写入接口完成日志的写入。写入日志文件时需要提供对应的FD、写入级别及写入的内容等,在写入级别大于默认级别时才进行后续日志的写入。日志模块先获得当前时间,并通过系统调用获得当前线程号等辅助信息,通过FD再调用可重入的线程安全文件系统接口将日志写入到文件中。因为多个线程会交错将日志打印在文件中,写入的时间、线程号对于以后日志的统计分析提供了条件。
步骤408,当日志文件的容量或者写入时间满足切换容量或切换时间时,创建新日志文件并确定所述新日志文件对应的另一文件描述符FD;
所述日志对象的属性还包括日志文件进行切换的容量和时间;
日志进行切换时需要在主线程中定时扫描日志文件,以便判断日志文件的容量或者写入时间满足预设配置的切换条件。
例如,当日志文件的容量大于预设容量时,或者日志文件已经写入的时间超过预设时间时,进行日志文件切换。日志文件:Log.1.txt,与该文件对应的文件描述为FD1,预设容量为1M,扫描到该日志文件的容量大于1M了,则需要将此日志文件进行切换。创建新日志文件:Log.2.txt,打开此新日志文件,获取FD2。
步骤409,更新日志对象中FD为所述另一FD,将之后日志写入所述另一FD对应的日志文件中;
可选的,更新日志对象中的FD为FD2,还需要更新日志对象的文件名称为Log.2.txt,后续写入调用FD,但写入的已经是FD2对应的文件Log.2.txt。
步骤410,当所述日志文件完成写入切换后,延迟一预定时间并关闭原日志文件。
当完成切换后,为了防止其他线程还可能写入Log.1.txt,因此,延迟一段时间再将Log.1.txt关闭。
步骤408-步骤410为日志文件的切换流程,如图7所示的日志文件的切换示意图。日志的切换需要在主线程中循环进行各个日志文件状态的判断,在配置的切换时间和切换容量满足时,通知日志调用(写入)模块将进行日志切换,日志调用(写入)模块可以将此作为功能拓展接口进行之前日志的分析处理等。日志切换时,将新建文件,并更新原文件对应的日志对象中FD,从而可以将后续日志的写入接入到新文件中。为了防止其它线程还可能写入原日志文件(尽管概率很小),对其进行延迟一段时间再关闭,目的是为了避免加锁。
此流程在主线程中进行日志文件扫描,同时采用延迟关闭方法等进行系统文件描述符的更新,进而完成日志写入切换,整个过程不需要加锁,性能得到保证。
本发明实施例提供的一种多线程日志管理的方法,通过采用FD关联日志文件,使得在多线程下供后续该FD对应的日志文件写入,日志文件切换等操作,可以避免系统等待,使系统进行实时处理,提高系统性能,且具有丰富的日志管理功能和扩展性。
本发明实施例提供一种多线程日志管理的装置,如图8所示,该装置包括:初始化单元801,设置单元802,创建单元803,判断模块8031,打开模块8032,新建模块8033,接收单元804,获取单元805,日志文件写入单元806,获得模块8061,日志文件写入模块8062,日志文件切换单元807,关闭单元808。
需要说明的是,一种多线程日志管理的装置中的模块与一种多线程日志管理与使用机制总体结构示意图中的模块不同,一种多线程日志管理的装置中的模块为根据执行一种多线程日志管理的方法时,对装置进行命名的虚拟模块。
初始化单元801,用于初始化日志对象池中的日志对象,所述日志对象池中包括至少一个日志对象,获取所述日志对象池中的一个日志对象;
可选的,所述初始化单元801具体用于:分配并建立至少一个空日志对象。
根据获取的日志对象,设置单元802,用于在主线程中设置日志对象的属性,所述属性包括所述日志文件的日志文件名称;
创建单元803,用于打开或新建所述日志文件名称对应的日志文件;
可选的,所述创建单元803中的判断模块8031,用于根据所述日志对象的属性中的日志文件名称,判断所述日志文件是否存在;
当所述日志文件存在时,所述创建单元803中的打开模块8032,则调用文件系统接口打开;
当所述日志文件不存在时,所述创建单元803中的新建模块8033,则调用文件系统接口新建。
接收单元804,用于接收所述文件系统接口发送的文件描述符FD;
根据接收到的所述FD,所述设置单元801还用于,在主线程中设置与所述日志文件一一对应的系统文件描述符FD。
创建日志文件可以只在系统初始化时在主线程中进行,所以不需要加锁。一个程序启动时,就有一个进程被操作系统创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程。
根据所述FD,即可执行多线程下日志文件的写入;
获取单元805,用于获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
可选的,FD可以由日志对象的属性中获得,写入级别和写入内容通常由多线程日志管理与使用机制中的日志调用(写入)模块自行设置;
当所述写入级别大于预设级别时,日志文件写入单元806,用于将所述写入内容写入所述FD对应的日志文件中;
可选的,当所述写入级别大于预设级别时,所述日志文件写入单元806中的获得模块8061获得当前写入时间和当前线程号;根据所述FD调用可重用的线程安全文件系统接口,所述日志文件写入单元806中的日志文件写入模块8062将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。可选的,所述当前写入时间、所述当前线程号用于统计分析日志文件中的不同日志。
通过FD,多个线程同时对某日志文件写入,调用线程安全的文件系统接口,底层文件系统就保证不冲突,上层不需要加锁,由于没有加解锁的延迟,所以日志写入实时性高,没有额外的性能损失。
根据所述FD,即可执行多线程下日志文件的切换;
其中,所述日志对象的属性还包括日志文件进行切换的容量和时间;当日志文件的容量或者写入时间满足所述切换容量或切换时间时,所述创建单元803还用于,创建新日志文件并确定所述新日志文件对应的另一文件描述符FD;
日志文件切换单元807,用于更新日志对象中FD为所述另一FD,将之后日志写入所述另一FD对应的日志文件中;
当所述日志文件完成写入切换后,关闭单元808,延迟一预定时间并关闭原日志文件。
日志文件的切换在主线程中进行日志文件扫描,同时采用延迟关闭方法等进行系统文件描述符的更新,进而完成日志写入切换,整个过程不需要加锁,性能得到保证。
本发明实施例提供一种多线程日志管理的装置,通过获取单元获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;当所述写入级别大于预设级别时,日志文件写入单元将所述写入内容写入所述FD对应的日志文件中。与现有技术中进行日志文件操作时,会引起系统等待,导致系统实时性差,性能下降相比,本发明实施例提供的方案采用FD关联了日志文件,可以在多线程下无锁的日志文件写入、切换,可以避免系统等待,使系统进行实时处理,提高系统性能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种多线程日志管理的方法,其特征在于,包括:
获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中,包括:
当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
2.根据权利要求1所述的方法,其特征在于,还包括主线程中的日志文件创建过程,该过程包括:
在主线程中设置日志对象的属性,所述属性包括所述日志文件的日志文件名称;
打开或新建所述日志文件名称对应的日志文件;
在主线程中设置与所述日志文件一一对应的系统文件描述符FD。
3.根据权利要求2所述的方法,其特征在于,在主线程中设置日志对象的属性之前,还包括:
初始化日志对象池中的日志对象,所述日志对象池中包括至少一个日志对象,获取所述日志对象池中的一个日志对象。
4.根据权利要求2-3任一所述的方法,其特征在于,打开或新建所述日志文件名称对应的日志文件,包括:
根据所述日志对象的属性中的日志文件名称,判断所述日志文件是否存在,若存在则调用文件系统接口打开,若不存在,则调用文件系统接口新建。
5.根据权利要求4所述的方法,其特征在于,在主线程中设置与所述日志文件一一对应的系统文件描述符FD之前包括:
接收所述文件系统接口发送的文件描述符FD。
6.根据权利要求3所述的方法,其特征在于,所述初始化日志对象池中的日志对象包括:分配并建立至少一个空日志对象。
7.根据权利要求1所述的方法,其特征在于,所述当前写入时间、所述当前线程号用于统计分析日志文件中的不同日志。
8.根据权利要求2所述的方法,其特征在于,还包括根据所述FD执行日志文件的切换:
所述日志对象的属性还包括日志文件进行切换的容量和时间;
当日志文件的容量或者写入时间满足切换容量或切换时间时,创建新日志文件并确定所述新日志文件对应的另一文件描述符FD;
更新日志对象中FD为所述另一文件描述符FD,将之后日志写入所述另一文件描述符FD对应的日志文件中。
9.根据权利要求8所述的方法,其特征在于,还包括:
当所述日志文件完成写入切换后,延迟一预定时间并关闭原日志文件。
10.一种多线程日志管理的装置,其特征在于,包括:
获取单元,用于获取线程写入的日志的系统文件描述符FD、写入级别和写入内容;
日志文件写入单元,用于当所述写入级别大于预设级别时,将所述写入内容写入所述FD对应的日志文件中;
所述日志文件写入单元包括:
获得模块,用于当所述写入级别大于预设级别时,获得当前写入时间和当前线程号;
日志文件写入模块,用于根据所述FD调用可重用的线程安全文件系统接口,将所述当前写入时间、所述当前线程号和所述写入内容写入所述FD对应的日志文件中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
设置单元,用于在主线程中设置日志对象的属性,所述属性包括所述日志文件的日志文件名称;
创建单元,用于打开或新建所述日志文件名称对应的日志文件;
所述设置单元还用于,在主线程中设置与所述日志文件一一对应的系统文件描述符FD。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
初始化单元,用于初始化日志对象池中的日志对象,所述日志对象池中包括至少一个日志对象,获取所述日志对象池中的一个日志对象。
13.根据权利要求11-12任一所述的装置,其特征在于,所述创建单元包括:
判断模块,用于根据所述日志对象的属性中的日志文件名称,判断所述日志文件是否存在;
打开模块,用于若存在则调用文件系统接口打开;
新建模块,用于若不存在,则调用文件系统接口新建。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
接收单元,用于接收所述文件系统接口发送的文件描述符FD。
15.根据权利要求12所述的装置,其特征在于,所述初始化单元具体用于:分配并建立至少一个空日志对象。
16.根据权利要求10所述的装置,其特征在于,所述当前写入时间、所述当前线程号用于统计分析日志文件中的不同日志。
17.根据权利要求11所述的装置,其特征在于,所述日志对象的属性还包括日志文件进行切换的容量和时间;
所述创建单元还用于,当日志文件的容量或者写入时间满足切换容量或切换时间时,创建新日志文件并确定所述新日志文件对应的另一文件描述符FD;
所述装置还包括:
日志文件切换单元,用于更新日志对象中FD为所述另一文件描述符FD,将之后日志写入所述另一文件描述符FD对应的日志文件中。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
关闭模块,用于当所述日志文件完成写入切换后,延迟一预定时间并关闭原日志文件。
CN201210057044.9A 2012-03-06 2012-03-06 一种多线程日志管理的方法及装置 Active CN103309858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210057044.9A CN103309858B (zh) 2012-03-06 2012-03-06 一种多线程日志管理的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210057044.9A CN103309858B (zh) 2012-03-06 2012-03-06 一种多线程日志管理的方法及装置

Publications (2)

Publication Number Publication Date
CN103309858A CN103309858A (zh) 2013-09-18
CN103309858B true CN103309858B (zh) 2016-04-13

Family

ID=49135097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210057044.9A Active CN103309858B (zh) 2012-03-06 2012-03-06 一种多线程日志管理的方法及装置

Country Status (1)

Country Link
CN (1) CN103309858B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657254B (zh) * 2013-11-19 2018-02-27 腾讯科技(深圳)有限公司 一种操作信息的处理方法及装置
CN103645983B (zh) * 2013-12-17 2016-05-18 山东中创软件工程股份有限公司 一种日志文件的生成方法及装置
CN103885726B (zh) * 2014-03-20 2017-07-21 东蓝数码股份有限公司 一种高效的多线程日志写入方法
CN104331463B (zh) * 2014-10-30 2018-07-17 深圳市锐明技术股份有限公司 一种文件系统多线程实现的方法及装置
CN104933161B (zh) * 2015-06-26 2018-03-09 飞天诚信科技股份有限公司 一种获取来自输入设备的输入数据的方法及装置
CN106202307B (zh) * 2016-07-01 2019-10-11 百势软件(北京)有限公司 一种批量日志保存方法及装置
CN106681819B (zh) * 2016-12-29 2020-11-06 杭州迪普科技股份有限公司 一种线程的处理方法及装置
CN107577579B (zh) * 2017-09-15 2020-10-27 通鼎互联信息股份有限公司 一种日志记录方法及装置
WO2019195969A1 (zh) * 2018-04-08 2019-10-17 华为技术有限公司 数据同步处理的方法和装置
CN109189726B (zh) * 2018-08-08 2020-12-22 奇安信科技集团股份有限公司 一种读写日志的处理方法及装置
CN111177097B (zh) * 2019-12-13 2022-06-17 北京浪潮数据技术有限公司 一种日志收集方法、装置、设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1361489A (zh) * 2000-12-28 2002-07-31 深圳市中兴通讯股份有限公司 一种日志信息的自动循环存储方法和系统
CN101667113A (zh) * 2008-09-02 2010-03-10 阿里巴巴集团控股有限公司 一种多线程日志记录方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101583716B1 (ko) * 2009-01-30 2016-01-08 삼성전자주식회사 비트 로깅을 이용한 데이터 복구 방법 및 그 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1361489A (zh) * 2000-12-28 2002-07-31 深圳市中兴通讯股份有限公司 一种日志信息的自动循环存储方法和系统
CN101667113A (zh) * 2008-09-02 2010-03-10 阿里巴巴集团控股有限公司 一种多线程日志记录方法及装置

Also Published As

Publication number Publication date
CN103309858A (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
CN103309858B (zh) 一种多线程日志管理的方法及装置
CN102346740B (zh) 一种文件同步方法、电子设备和同步系统
CN104216767A (zh) 多线程之间访问共享数据的方法及装置
CN107247619B (zh) 虚拟机热迁移方法、装置、系统、存储介质及设备
CN106919471B (zh) 用于快照建立的方法和系统
CN102693159B (zh) 基于用户模式多任务下控制硬件设备的方法及其装置
US9069790B2 (en) Multi-threaded message passing journal
CN108319543A (zh) 一种计算机日志数据的异步处理方法及其介质、系统
CN106446159B (zh) 一种存储文件的方法、第一虚拟机及名称节点
CN102340533A (zh) 多租户系统及多租户系统存取数据的方法
DE112013000654T5 (de) Verzweigungsvorhersagelogik
CN103885726A (zh) 一种高效的多线程日志写入方法
EP3531264B1 (en) Data storage, reading, and cleansing method and device, and cloud storage system
CN103500073A (zh) 一种数据块迁移方法及装置
CN103905220B (zh) 数据同步处理方法及系统
CN110362348A (zh) 一种队列存取数据的方法、装置及电子设备
CN111414256A (zh) 基于麒麟移动操作系统的应用程序进程派生方法、系统及介质
CN103618762A (zh) 一种基于aop的企业服务总线状态预处理系统及方法
CN101813934A (zh) 基于可编程器件的三冗余总线同步和表决电路
CN103870330A (zh) 一种基于dsp的任务调度方法和装置
CN103927244B (zh) 一种基于动态代理实现的插件调度过程监控的方法
CN101464820A (zh) 磁盘设备的持续数据保护方法和系统
WO2021120693A1 (zh) 一种新旧代码共同运行的kbroker分布式操作系统
EP2678769B1 (en) A device controller for a memory device
CN105488047B (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
C14 Grant of patent or utility model
GR01 Patent grant