CN111966655B - 日志采集过程中管理内存中文件对象的方法和装置 - Google Patents
日志采集过程中管理内存中文件对象的方法和装置 Download PDFInfo
- Publication number
- CN111966655B CN111966655B CN202010830613.3A CN202010830613A CN111966655B CN 111966655 B CN111966655 B CN 111966655B CN 202010830613 A CN202010830613 A CN 202010830613A CN 111966655 B CN111966655 B CN 111966655B
- Authority
- CN
- China
- Prior art keywords
- file
- log
- log file
- latest sequence
- read
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 230000008569 process Effects 0.000 title abstract description 55
- 238000013507 mapping Methods 0.000 claims abstract description 136
- 238000005096 rolling process Methods 0.000 claims abstract description 33
- 230000004048 modification Effects 0.000 claims description 49
- 238000012986 modification Methods 0.000 claims description 49
- 238000004140 cleaning Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 9
- 230000002085 persistent effect Effects 0.000 claims description 5
- 239000003550 marker Substances 0.000 claims 9
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000005520 cutting process Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种日志采集过程中管理内存中文件对象的方法和装置,该方法包括:获取日志读取位置记录文件;根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;读取待采集日志文件,获取待采集日志文件的最新顺序标记;将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,通过多重判断规则,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;遍历在读文件列表,获取待读取日志文件的最新顺序标记,将待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射进行对比,将符合设定规则的待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
Description
技术领域
本发明涉及计算机信息处理技术领域,尤其涉及一种日志采集过程中管理内存中文件对象的方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着计算机技术的不断发展,日志不再仅可以用来供工程师人工排查错误,而且可以成为大数据分析、智能运维等领域的数据源。因此,一个优秀的日志采集工具必不可少。在文本日志采集过程中,为了减少数据重复和数据丢失,需要在内存中记录每个日志文件所采集到的位置,并定期进行持久化,以便在采集工具重新启动后可以实现断点续传。
然而,在待采集的日志滚动时间间隔较短,待采集日志文件个数多的场景下,在内存记录大量的日志文件采集位置信息必将带来性能问题。由此引出的一个技术问题就是,内存中究竟需要保持哪些文件句柄的打开,以及记录哪些文件的采集位置信息,以便于同时满足提高数据准确性、减少内存占用、提高程序性能的多重需求。
现有的方式是通过设置超时关闭参数close_inactive,以及超时清理参数clean_inactive。当文件最后修改时间距离当前时间已经超过close_inactive所设置的数值,则关闭文件句柄;当文件的最后修改时间距离当前时间已经超过clean_inactive所设置的值,则关闭文件句柄,并从内存中清理当前保存的该文件的采集位置信息。
现有技术的缺点主要包括:参数close_inactive如果设置的不合理,在某些场景下会导致性能下降,另外在某些场景下又会导致文件句柄数占用过多。参数clean_inactive如果设置的不合理,在某些场景下会导致数据不准确,另外在某些场景下又会导致日志采集程序占用内存较高,影响程序性能。
因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
发明内容
本发明实施例提供一种日志采集过程中管理内存中文件对象的方法,实现了对内存中打开句柄日志文件的精准管理,减小了内存占用,该方法包括:
获取日志读取位置记录文件;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
读取待采集日志文件,获取待采集日志文件的最新顺序标记;
将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
本发明实施例还提供一种日志采集过程中管理内存中文件对象的装置,包括:
文件获取模块,用于获取日志读取位置记录文件;
日志文件最新顺序标记映射建立模块,用于根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
待采集日志文件读取模块,用于读取待采集日志文件,获取待采集日志文件的最新顺序标记;
待采集日志文件句柄状态控制模块,用于将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
日志文件最新顺序标记映射更新模块,用于遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
日志数据读取模块,用于遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
待读取日志文件清理控制模块,用于遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种日志采集过程中管理内存中文件对象的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述一种日志采集过程中管理内存中文件对象的方法的计算机程序。
本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法和装置,首先获取日志读取位置记录文件,然后对日志读取位置记录文件进行分析,得到每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;接着读取待采集日志文件,获取待采集日志文件的最新顺序标记;进一步将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;进一步遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;再进一步遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;最后遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。本发明实施例无需用户设定超时关闭参数和超时清理参数,自动根据待采集日志文件的最新顺序标记确定该待采集日志文件是否读取完毕以及是否还需要更新,来对文件句柄的打开和关闭进行控制,并从内存中及时清理已经完成读取且不再更新的日志文件,降低用户的使用难度;同时通过最新顺序标记,实现了日志采集的精准定位,比根据文件的最后修改时间来决定文件是否清理出内存更加准确,不再出现文件还会更新而已经被移出内存导致文件从头采集的情况,提高了日志采集正确性;最后,本发明实施例在内存中仅需保留当前正在写入的文件和最新顺序标记对应的日志文件,减少了内存的占用,减少打开的文件句柄,实现了日志的高性能采集。本发明实施例提供了一种更优的管理机制,保证了数据准确性、并能兼顾程序性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例一种日志采集过程中管理内存中文件对象的方法示意图。
图2为本发明实施例一种日志采集过程中管理内存中文件对象的方法中日志文件最新顺序标记映射确定过程示意图。
图3为本发明实施例一种日志采集过程中管理内存中文件对象的方法的流程图。
图4为运行本发明实施的一种日志采集过程中管理内存中文件对象的方法的计算机装置示意图。
图5为本发明实施例一种日志采集过程中管理内存中文件对象的装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例一种日志采集过程中管理内存中文件对象的方法示意图,如图1所示,本发明实施例提供一种日志采集过程中管理内存中文件对象的方法,实现了对内存中打开句柄日志文件的精准管理,减小了内存占用,该方法包括:
步骤101:获取日志读取位置记录文件;
步骤102:根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
步骤103:读取待采集日志文件,获取待采集日志文件的最新顺序标记;
步骤104:将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
步骤105:遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
步骤106:遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
步骤107:遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法,首先获取日志读取位置记录文件,然后对日志读取位置记录文件进行分析,得到每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;接着读取待采集日志文件,获取待采集日志文件的最新顺序标记;进一步将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;进一步遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;再进一步遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;最后遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。本发明实施例无需用户设定超时关闭参数和超时清理参数,自动根据待采集日志文件的最新顺序标记确定该待采集日志文件是否读取完毕以及是否还需要更新,来对文件句柄的打开和关闭进行控制,并从内存中及时清理已经完成读取且不再更新的日志文件,降低用户的使用难度;同时通过最新顺序标记,实现了日志采集的精准定位,比根据文件的最后修改时间来决定文件是否清理出内存更加准确,不再出现文件还会更新而已经被移出内存导致文件从头采集的情况,提高了日志采集正确性;最后,本发明实施例在内存中仅需保留当前正在写入的文件和最新顺序标记对应的日志文件,减少了内存的占用,减少打开的文件句柄,实现了日志的高性能采集。本发明实施例提供了一种更优的管理机制,保证了数据准确性、并能兼顾程序性能。
在一些常用的开源日志采集工具中,使用文件的索引节点(inode)和设备号来唯一标识一个文件,通常使用文件的最后修改时间来决定某个文件是否要保持文件句柄的打开,以及是否需要在内存中保留该文件的采集位置信息
例如,前述的现有技术中设置超时关闭参数close_inactive以及超时清理参数clean_inactive时,需要具备丰富的实践经验和技巧,一般来说,close_inactive应设置大于文件最大更新间隔,clean_inactive应设置大于文件切割时间。但是,文件最大更新间隔和文件切割时间各系统不同,而且也非固定数值,需要使用者小心设置。
例如,当超时关闭参数close_inactive不合理设置的影响:
(1)在某些场景下会导致性能下降
如果超时关闭参数close_inactive设置的较短,则文件句柄会经常关闭,而在文件有修改需要重新打开时,需要将文件偏移量指针指向上次读取到的位置。如果文件较大,移动文件偏移量指针的操作会比较耗时,而较频繁的打开文件并移动指针则会导致性能下降。因此,超时关闭参数close_inactive不能设置的过短。
(2)在某些场景下会导致文件句柄数占用过多
如果超时关闭参数close_inactive设置的较长,则文件句柄会在比较长的时间内保持打开,对于在短时间内产生大量新文件的系统,则有可能占用较多的句柄资源。因此,超时关闭参数close_inactive不能设置的过长。
再例如,当超时清理参数clean_inactive不合理设置的影响:
(1)在某些场景下会导致数据不准确
如果一个文件的最后修改时间距离当前时间已经超过超时清理参数clean_inactive所设置的值,它将会被清理出内存,也即不再保留该文件的采集位置信息。当这个文件再次被更新时,它将会从头开始被采集,引起整个文件的数据重复。因此,超时清理参数clean_inactive不能设置的过短。
(2)在某些场景下会导致日志采集程序占用内存较高
如果一个系统会在短时间内生成大量的新文件,那么如超时清理参数clean_inactive设置的较长,则会导致在内存中保持很多文件的采集位置信息,导致内存占用较高,影响程序性能。因此,超时清理参数clean_inactive不能设置的过长。
本发明实施例吸取现有日志采集工具中,文件的句柄关闭机制以及内存中各个文件采集位置信息清理机制的优缺点,提供了一种无须设置超时关闭参数close_inactive以及超时清理参数clean_inactive的内存中文件对象的管理方法,具体实施本发明实施例的一种日志采集过程中管理内存中文件对象的方法时,可以包括:
获取日志读取位置记录文件;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
读取待采集日志文件,获取待采集日志文件的最新顺序标记;
将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,前述的日志读取位置记录文件,为日志采集程序在运行过程中将采集位置信息持久化到磁盘所形成的日志读取位置记录文件;
所述获取日志读取位置记录文件,包括:连接磁盘,从磁盘中获取日志读取位置记录文件。
实施例中,日志采集程序在运行的过程中会不断的将采集位置信息持久化至磁盘,形成日志读取位置记录文件(position.json);程序启动时,连接磁盘,从磁盘中获取日志读取位置记录文件。
图2为本发明实施例一种日志采集过程中管理内存中文件对象的方法中日志文件最新顺序标记映射确定过程示意图,如图2所示,具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,前述的根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射,包括:
步骤201:根据日志读取位置记录文件,获取日志实例文件路径;
步骤202:根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记;
步骤203:将日志实例文件路径转换为关键字;
步骤204:将每个滚动日志实例的最新顺序标记转换为数值;
步骤205:将关键字和数值以关键字-数值键值对的格式,存入日志文件最新顺序标记映射MaxTimeMap。
实施例中,前述的滚动日志实例,是指由一个进程写入的同一个日志文件。例如在2020年3月26日,系统中当前写入的日志文件名是a.log,滚动历史日志文件名是a.20200326.1.log,其中“20200326”是时间标记,“1”是文件递增序号,通常文件达到一定大小后会切割出新的文件,新文件的该文件递增序号会递增。在特殊情况下,当前写入的日志文件名直接带有时间和文件递增序号,此种特殊情况不在本申请实施例的考虑范围内。
前述的滚动日志实例的最新顺序标记,因为文件名中的时间和文件递增序号都是递增的,所以拥有最大时间,并且拥有当天最大文件递增序号的文件,是除了a.log之外最新的文件。因此,取日志文件名中的时间和文件递增序号进行拼接,形成的字符串称作顺序标记;而最大时间和当天最大文件递增序号拼接的字符串,则称为最新顺序标记。滚动日志实例的最新顺序标记,是指滚动日志实例中最大时间和当天最大文件递增序号拼接的字符串。例如文件a.20200326.2.log,其顺序标记是“20200326+2”。如果有文件a.log、a.20200326.1.log、a.20200326.2.log、a.20200325.1.log,则除了当前正在写入的a.log,最新的日志文件是a.20200326.2.log,该滚动的日志实例的最新顺序标记为“20200326+2”。
前述的滚动日志实例的最新顺序标记的意义是:因为读取日志文件时,会按照文件的最后修改时间进行排序,修改时间早的先读取,因此,当已经读取到最新顺序标记的文档时,说明顺序标记小于最新顺序标记的文件已经被读完了,且不会再次更新,因此可以关闭文件句柄。
因此,在实施例中,首先读取日志读取位置记录文件,获取日志实例文件路径;举例获取到的一个日志实例文件路径为“文件/data/a.20200326.2.log”;接下来根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记;举例获取到的一个滚动日志实例的最新顺序标记为“20200326+2”;将日志实例文件路径转换为关键字(key);例如将上述的“文件/data/a.20200326.2.log”进行转换,将其中的“/”替换为“-”,并掉文件名中的时间和文件递增序号,得到关键字“-data-a.log”;将每个滚动日志实例的最新顺序标记转换为数值(value);将关键字和数值以关键字-数值键值对的格式,存入日志文件最新顺序标记映射;将上述的关键字“-data-a.log”以及最新顺序标记转换成的数值,按照关键字-数值键值对的格式存储至日志文件最新顺序标记映射;其中关键字-数值为一种键值对存储格式;例如在/data目录下得到的日志文件最新顺序标记映射中,“a.20200326.2.log”文件的关键字是“-data-a.log”,数值对应的滚动日志实例的最新顺序标记为“20200326+2”。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,读取待采集日志文件,获取待采集日志文件的最新顺序标记,包括:获取符合配置规则的所有待采集日志文件,读取待采集日志文件,遍历每一个待采集日志文件,计算得到待采集日志文件的最新顺序标记。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射MaxTimeMap进行匹配查询,若日志文件最新顺序标记映射MaxTimeMap中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射MaxTimeMap中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射MaxTimeMap中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表FilesReading;用待读取日志文件的索引节点inode和磁盘设备号作为文件的唯一标识;
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,若日志文件最新顺序标记映射中未记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表FilesReading。
实施例中,当日志文件最新顺序标记映射中未记录有该待采集日志文件的最新顺序标记,则表示本次日志采集过程是新启动的,没有历史文件,因此可以直接将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表FilesReading。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将该待采集日志文件标记为已处理。
实施例中,当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,表示该待采集日志文件已经进行过采集,不需要再进行处理,因此将该待采集日志文件标记为已处理。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射,包括:遍历在读文件列表FilesReading,对在读文件列表FilesReading中的每一个待采集日志文件进行一次扫描,依次取出每一个待采集日志文件,获取每一待读取日志文件的最新顺序标记,对每一个待采集日志文件进行对比,具体对比为:将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,表示待读取日志文件的最新顺序标记未存储于日志文件最新顺序标记映射之中,日志文件最新顺序标记映射需要进行更新,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射。若待读取日志文件的最新顺序标记小于日志文件最新顺序标记映射中的最新顺序标,表示日志文件最新顺序标记映射无需更新。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻,包括:在对日志文件最新顺序标记映射进行更新后,需要对日志数据进行读取,遍历在读文件列表,对在读文件列表中的全部待读取日志文件进行扫描,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,待读取日志文件的最后修改时刻是指待读取日志文件输入日志数据停止时的时刻,待读取日志文件的最后被读取时刻是指待读取日志文件最后被读取的时刻。
将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,表示该待读取日志文件发生了日志数据输入,得到了新的日志数据,也即是待读取日志文件发生了更新,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻。若该待读取日志文件的最后修改时刻小于最后被读取时刻,则表示该待读取日志文件未发生更新,因此无需对该待读取日志文件进行操作。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除,包括:在读取完日志数据后,需要对内存中在读文件列表进行及时清理,遍历在读文件列表,在前述已经得到在读文件列表中待读取日志文件的最新顺序标记的基础上,
将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,表示该待读取日志文件已经被读取完毕而且不会再更新,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法时,在一个实施例中,若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄保持打开状态,保留在内存的在读文件列表中。
实施例中,若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,说明该待读取日志文件正在采集读取中,还未完成采集读取,因此需要将该待读取日志文件继续保留在内存中,需要将该待读取日志文件的句柄保持打开状态。
图3为本发明实施例一种日志采集过程中管理内存中文件对象的方法的流程图,如图3所示,本发明实施例提供一种日志采集过程中管理内存中文件对象的方法流程,包括如下步骤:
步骤1:日志采集程序在运行过程中会不断地将采集位置信息持久化到磁盘的日志读取位置记录文件position.json。程序启动时,获取日志读取位置记录文件position.json的内容;
步骤2:如果日志读取位置记录文件position.json文件存在,执行步骤3,否则直接执行步骤4;
步骤3:根据日志读取位置记录文件position.json的内容计算出每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射MaxTimeMap。其中日志文件最新顺序标记映射MaxTimeMap中存储的是关键字-数值键值对格式,关键字(key)是由日志实例的文件路径转化而来,例如文件/data/a.20200326.2.log,则关键字(key)是-data-a.log(即用“-”替换掉“/”,并去掉文件名中的时间和文件递增序号),数值(value)则存储的是该日志实例的最新顺序标记。例如:如果有/data目录下的日志文件a.log、a.20200326.1.log、a.20200326.2.log、a.20200325.1.log,则日志文件最新顺序标记映射MaxTimeMap中存储的关键字(key)是-data-a.log,数值(value)对应的滚动日志实例的最新顺序标记是“20200326+2”;例如,日志文件最新顺序标记映射MaxTimeMap中最新顺序标记初始化为<a.log,20>。
步骤4:获取符合配置规则的所有待采集日志文件;
步骤5:遍历步骤4的每个待采集日志文件,获取待采集日志文件的最新顺序标记,并在日志文件最新顺序标记映射MaxTimeMap中匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则执行步骤6,否则直接执行步骤7;
步骤6:当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将该待采集日志文件标记为已处理,则说明该待采集日志文件已经进行过采集,将该待采集日志文件标记为已处理,不再处理;否则,执行步骤7;
步骤7:将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表FilesReading,用待读取日志文件的inode和磁盘设备号作为文件的唯一标识;例如,在与MaxTimeMap匹配后,在读文件列表中有<a.21.log>,<a.22.log>。
步骤8.:遍历在读文件列表FilesReading中所有待读取日志文件,对日志文件最新顺序标记映射MaxTimeMap进行更新;遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射,例如,将MaxTimeMap的最新顺序标记更新为<a.22.log>。
步骤9:遍历在读文件列表FilesReading,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;例如,看<a.21.log>,<a.22.log>是否有更新,有更新的话读取日志数据,并记录当前系统时刻为这个被读取文件的最后被读取时刻。
步骤10:在步骤8和9遍历的读文件列表FilesReading的所有待读取日志文件的基础上,获取待读取日志文件的顺序标记,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,说明这个文件在这次遍历过程中已经被读取完毕而且不会再更新,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除,从而清理出内存。若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄保持打开状态,保留在内存的在读文件列表中。例如,<a.21.log>已经读取完毕,并且不会再有写入了(因为22号的文件已经产生了),将<a.21.log>关闭句柄并清理出内存,<a.22.log>保留在内存中并保持句柄打开。
执行完步骤10再返回步骤4,循环执行。
本发明实施例还提供一种运行一种日志采集过程中管理内存中文件对象的方法的系统,包括:
日志采集数据源模块、读取控制器模块、文件内容读取模块。
日志采集数据源模块调用读取控制器模块,来控制数据读取流程;读取控制器模块又调用文件内容读取模块,来读取具体的数据。
日志采集数据源模块:用来读取配置信息;根据配置信息实例化相应的读取控制器;控制整个日志采集流程,定时调用读取取控制器的方法,来获取消息数据并发送到管道。
读取控制器模块:为每个读取的日志文件,根据配置实例化相应的文件内容读取对象,来读取日志数据;维护每个文件对应的文件内容读取对象,并根据一种日志采集过程中管理内存中文件对象的方法对内存中的日志采集文件进行清理;将内存中保存的文件采集位置信息持久化到磁盘,以便程序重新启动后可以从上次的位置继续读取数据。
文件内容读取模块:维护文件的基本信息,包括文件唯一标识、文件句柄、读取到的位置信息、最后读取时间等;读取文件内容并包装成一条条消息。
图4为运行本发明实施的一种日志采集过程中管理内存中文件对象的方法的计算机装置示意图,如图4所示,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种日志采集过程中管理内存中文件对象的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行实现上述一种日志采集过程中管理内存中文件对象的方法的计算机程序。
本发明实施例中还提供了一种日志采集过程中管理内存中文件对象的装置,如下面的实施例所述。由于该装置解决问题的原理与一种日志采集过程中管理内存中文件对象的方法相似,因此该装置的实施可以参见一种日志采集过程中管理内存中文件对象的方法的实施,重复之处不再赘述。
图5为本发明实施例一种日志采集过程中管理内存中文件对象的装置示意图,如图5所示,本发明实施例还提供一种日志采集过程中管理内存中文件对象的装置,可以包括:
文件获取模块501,用于获取日志读取位置记录文件;
日志文件最新顺序标记映射建立模块502,用于根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
待采集日志文件读取模块503,用于读取待采集日志文件,获取待采集日志文件的最新顺序标记;
待采集日志文件句柄状态控制模块504,用于将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
日志文件最新顺序标记映射更新模块505,用于遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
日志数据读取模块506,用于遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
待读取日志文件清理控制模块507,用于遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的装置时,在一个实施例中,所述日志读取位置记录文件,为日志采集程序在运行过程中将采集位置信息持久化到磁盘所形成的日志读取位置记录文件;
文件获取模块,具体用于:连接磁盘,从磁盘中获取日志读取位置记录文件。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的装置时,在一个实施例中,日志文件最新顺序标记映射建立模块,具体用于:
根据日志读取位置记录文件,获取日志实例文件路径;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记;
将日志实例文件路径转换为关键字;
将每个滚动日志实例的最新顺序标记转换为数值;
将关键字和数值以关键字-数值键值对的格式,存入日志文件最新顺序标记映射。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的装置时,在一个实施例中,待采集日志文件句柄状态控制模块,还用于若日志文件最新顺序标记映射中未记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的装置时,在一个实施例中,待采集日志文件句柄状态控制模块,还用于当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将该待采集日志文件标记为已处理。
具体实施本发明实施例提供的一种日志采集过程中管理内存中文件对象的装置时,在一个实施例中,待读取日志文件清理控制模块,还用于若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄保持打开状态,保留在内存的在读文件列表中。
综上,本发明实施例提供的一种日志采集过程中管理内存中文件对象的方法和装置,首先获取日志读取位置记录文件,然后对日志读取位置记录文件进行分析,得到每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;接着读取待采集日志文件,获取待采集日志文件的最新顺序标记;进一步将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;进一步遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中的最新顺序标进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中的最新顺序标,则将日志文件最新顺序标记映射中的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;再进一步遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;最后遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。本发明实施例无需用户设定超时关闭参数和超时清理参数,自动根据待采集日志文件的最新顺序标记确定该待采集日志文件是否读取完毕以及是否还需要更新,来对文件句柄的打开和关闭进行控制,并从内存中及时清理已经完成读取且不再更新的日志文件,降低用户的使用难度;同时通过最新顺序标记,实现了日志采集的精准定位,比根据文件的最后修改时间来决定文件是否清理出内存更加准确,不再出现文件还会更新而已经被移出内存导致文件从头采集的情况,提高了日志采集正确性;最后,本发明实施例在内存中仅需保留当前正在写入的文件和最新顺序标记对应的日志文件,减少了内存的占用,减少打开的文件句柄,实现了日志的高性能采集。本发明实施例提供了一种更优的管理机制,保证了数据准确性、并能兼顾程序性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种日志采集过程中管理内存中文件对象的方法,其特征在于,包括:
获取日志读取位置记录文件;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
读取待采集日志文件,获取待采集日志文件的最新顺序标记;
将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
2.如权利要求1所述的方法,其特征在于,所述日志读取位置记录文件,为日志采集程序在运行过程中将采集位置信息持久化到磁盘所形成的日志读取位置记录文件;
所述获取日志读取位置记录文件,包括:连接磁盘,从磁盘中获取日志读取位置记录文件。
3.如权利要求1所述的方法,其特征在于,根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射,包括:
根据日志读取位置记录文件,获取日志实例文件路径;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记;
将日志实例文件路径转换为关键字;
将每个滚动日志实例的最新顺序标记转换为数值;
将关键字和数值以关键字-数值键值对的格式,存入日志文件最新顺序标记映射。
4.如权利要求1所述的方法,其特征在于,若日志文件最新顺序标记映射中未记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表。
5.如权利要求1所述的方法,其特征在于,当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将该待采集日志文件标记为已处理。
6.如权利要求1所述的方法,其特征在于,若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄保持打开状态,保留在内存的在读文件列表中。
7.一种日志采集过程中管理内存中文件对象的装置,其特征在于,包括:
文件获取模块,用于获取日志读取位置记录文件;
日志文件最新顺序标记映射建立模块,用于根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记,存入日志文件最新顺序标记映射;
待采集日志文件读取模块,用于读取待采集日志文件,获取待采集日志文件的最新顺序标记;
待采集日志文件句柄状态控制模块,用于将待采集日志文件的最新顺序标记与日志文件最新顺序标记映射进行匹配查询,若日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的最新顺序标记与日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记进行对比,当该待采集日志文件的最新顺序标记大于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表;
日志文件最新顺序标记映射更新模块,用于遍历在读文件列表,获取每一待读取日志文件的最新顺序标记,将该待读取日志文件的最新顺序标记与日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记进行对比,若待读取日志文件的最新顺序标记大于日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记,则将日志文件最新顺序标记映射中记录有该待采集日志文件的最新顺序标记更换为待读取日志文件的最新顺序标记,对日志文件最新顺序标记映射进行更新,确定更新后日志文件最新顺序标记映射;
日志数据读取模块,用于遍历在读文件列表,获取每一待读取日志文件的最后修改时刻和最后被读取时刻,将该待读取日志文件的最后修改时刻与最后被读取时刻进行对比,若该待读取日志文件的最后修改时刻大于最后被读取时刻,则从该待读取日志文件中读取日志数据,待日志数据读取完成后将该待读取日志文件的最后被读取时刻更新为当前系统时刻;
待读取日志文件清理控制模块,用于遍历在读文件列表,将每一待读取日志文件的最新顺序标记与更新后日志文件最新顺序标记映射的最新顺序标记进行对比,若该待读取日志文件的最新顺序标记小于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄关闭并从内存的在读文件列表中清除。
8.如权利要求7所述的装置,其特征在于,所述日志读取位置记录文件,为日志采集程序在运行过程中将采集位置信息持久化到磁盘所形成的日志读取位置记录文件;
文件获取模块,具体用于:连接磁盘,从磁盘中获取日志读取位置记录文件。
9.如权利要求7所述的装置,其特征在于,日志文件最新顺序标记映射建立模块,具体用于:
根据日志读取位置记录文件,获取日志实例文件路径;
根据日志读取位置记录文件,确定每个滚动日志实例的最新顺序标记;
将日志实例文件路径转换为关键字;
将每个滚动日志实例的最新顺序标记转换为数值;
将关键字和数值以关键字-数值键值对的格式,存入日志文件最新顺序标记映射。
10.如权利要求7所述的装置,其特征在于,待采集日志文件句柄状态控制模块,还用于若日志文件最新顺序标记映射中未记录有该待采集日志文件的最新顺序标记,则将该待采集日志文件的句柄打开,生成待读取日志文件,放入内存的在读文件列表。
11.如权利要求7所述的装置,其特征在于,待采集日志文件句柄状态控制模块,还用于当该待采集日志文件的最新顺序标记小于日志文件最新顺序标记映射中的该待采集日志文件对应的最新顺序标记时,将该待采集日志文件标记为已处理。
12.如权利要求7所述的装置,其特征在于,待读取日志文件清理控制模块,还用于若该待读取日志文件的最新顺序标记大于更新后日志文件最新顺序标记映射的最新顺序标记,则将该待读取日志文件的句柄保持打开状态,保留在内存的在读文件列表中。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行实现权利要求1至6任一项所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010830613.3A CN111966655B (zh) | 2020-08-18 | 2020-08-18 | 日志采集过程中管理内存中文件对象的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010830613.3A CN111966655B (zh) | 2020-08-18 | 2020-08-18 | 日志采集过程中管理内存中文件对象的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111966655A CN111966655A (zh) | 2020-11-20 |
CN111966655B true CN111966655B (zh) | 2023-10-24 |
Family
ID=73387831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010830613.3A Active CN111966655B (zh) | 2020-08-18 | 2020-08-18 | 日志采集过程中管理内存中文件对象的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966655B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645297B (zh) * | 2021-08-10 | 2022-11-04 | 中国银行股份有限公司 | 日志文件断点续传的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
CN109446174A (zh) * | 2018-10-30 | 2019-03-08 | 东软集团股份有限公司 | 日志数据记录方法、装置及计算机可读存储介质 |
CN111459764A (zh) * | 2020-04-09 | 2020-07-28 | 江苏盛海智能科技有限公司 | 一种日志管理方法及终端 |
-
2020
- 2020-08-18 CN CN202010830613.3A patent/CN111966655B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
CN109446174A (zh) * | 2018-10-30 | 2019-03-08 | 东软集团股份有限公司 | 日志数据记录方法、装置及计算机可读存储介质 |
CN111459764A (zh) * | 2020-04-09 | 2020-07-28 | 江苏盛海智能科技有限公司 | 一种日志管理方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN111966655A (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400288A (zh) | 数据质量检查方法及系统 | |
CN109918386B (zh) | 一种数据恢复方法和装置、计算机可读存储介质 | |
CN113918733B (zh) | 一种获取目标知识图谱的数据处理系统 | |
CN111966655B (zh) | 日志采集过程中管理内存中文件对象的方法和装置 | |
CN116383193A (zh) | 一种数据管理方法、装置、电子设备和存储介质 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN107515919A (zh) | 一种包含分类信息的id编号方法 | |
Schulz et al. | Image-documentation of existing buildings using a serverbased bim collaboration format workflow | |
JP4177833B2 (ja) | リンクリストへのマルチプロセスアクセス方法および装置 | |
CN106873956B (zh) | 基于连续关键字的代码补全方法及装置 | |
CN114385188A (zh) | 一种代码工作量统计方法、装置和电子设备 | |
CN113919761A (zh) | 一种诉讼案件管理方法、系统及装置 | |
CN111563123A (zh) | 一种hive仓库元数据实时同步方法 | |
CN108255851B (zh) | 一种项目数据的梳理系统及方法 | |
CN109542887B (zh) | 一种通用型在线数据离线编辑融合的方法和装置 | |
CN115237875B (zh) | 一种日志数据处理方法、装置、设备、存储介质 | |
CN116431688B (zh) | 一种数据的处理方法、装置、电子设备及存储介质 | |
CN114692595B (zh) | 一种基于文本匹配的重复冲突方案检测方法 | |
CN113157664B (zh) | 基于分级标识的数据分级与授权方法和系统 | |
CN113674115B (zh) | 一种基于数据治理技术的高校数据管理辅助系统及方法 | |
CN116126790B (zh) | 铁路工程档案归档方法、装置、电子设备、存储介质 | |
CN113645297B (zh) | 日志文件断点续传的方法及装置 | |
CN108153817B (zh) | 一种智能网页数据采集方法 | |
US10534706B1 (en) | Automated garbage collection architecture | |
JP2009151727A (ja) | 文書処理システム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |