1.本发明涉及数据处理技术领域,特别是涉及一种
日志处理方法和一种半导体工艺设备。
背景技术:
2.在软件产品日常的生产运行过程中,需要记录软件系统的运行日志,以便在系统测试、上线运行和生产过程出现问题的情况下,能够借助问题现象及运行日志进行问题根因分析,以更好地运行和维护我们的软件产品,记录日志需要开发一种日志管理框架,并且需要组件化,以方便被不同项目组引用。
3.现有技术日志处理大多采用的是log4net日志管理框架,然而log4net日志框架在使用时存在一定的缺陷,如在跨天记录时,当天的日志仍被写到生成日期为前一天的日志
文件里,使得前一天的日志文件被锁定,导致该日志文件无法进行压缩备份,不便于日志的管理。
技术实现要素:
4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种日志处理方法和相应的一种日志处理装置。
5.为了解决上述问题,本发明实施例公开了一种日志处理方法,应用于日志组件,
所述方法包括:
6.当日志组件被应用程序调用以对日志文件进行写日志时,判断待写入日志的生成日期与所述日志文件的生成日期是否相同;
7.若所述待写入日志的生成日期与所述日志文件的生成日期不同,则关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;
8.生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;
9.调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
10.可选地,还包括:
11.当所述日志组件启动时,调用所述日志组件的初始化接口,解析日志配置文件;所述日志配置文件包括日志类型;
12.生成所述日志类型对应的文件流对象和日志文件,并绑定对应的所述文件流对象和所述日志文件。
13.可选地,所述日志配置文件还包括预设日志文件大小
阈值,所述方法还包括:
14.若所述待写入日志的生成日期与所述日志文件的生成日期相同,且当所述日志文件大小超出所述预设日志文件大小阈值时,关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;
15.生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日
志文件的绑定关系;
16.调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
17.可选地,所述日志配置文件还包括日志文件存放路径,所述方法还包括:
18.确定所述日志存放路径下达到所述预设日志文件大小阈值的日志文件;
19.当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,调用所述文件流对象的删除接口,删除所述目标日志文件。。
20.可选地,所述日志配置文件还包括预设文件数量阈值;
21.所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,包括:
22.当所述日志存放路径下达到所述预设日志文件大小阈值的多个日志文件超出所述预设文件数量阈值时,确定所述多个日志文件生成时间的先后顺序,并根据所述日志文件生成时间的先后顺序,将超出所述预设文件数量阈值的日志文件确定为需要删除的目标日志文件。
23.可选地,所述日志配置文件还包括预设文件保留天数阈值;
24.所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,还包括:
25.当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件未超出所述预设文件数量阈值,且当前日期减去所述日志文件生成日期得到的天数大于所述预设文件保留天数阈值时,确定所述天数大于所述预设文件保留天数阈值的日志文件,并将所述天数大于所述预设文件保留天数阈值的日志文件确定为需要删除的目标日志文件。
26.可选地,还包括:
27.当待写入日志的生成日期与所述日志文件的生成日期不同时,确定所述日志文件为需要压缩的目标日志文件;和/或,当所述日志文件大小达到所述预设文件大小阈值时,确定所述日志文件为需要压缩的目标日志文件;
28.调用所述文件流对象的压缩接口,压缩所述目标日志文件。
29.可选地,还包括:
30.当所述日志组件被所述应用程序的多个线程调用以对同一日志文件进行写日志时,基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件。
31.可选地,所述基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件,包括:
32.将所述多个线程放入等待队列中,将位于所述等待队列队首的线程进行加锁处理,以使所述被加锁处理的线程独占所述日志文件。
33.可选地,还包括:
34.当所述被加锁处理的线程结束对所述日志文件写日志时,将所述被加锁处理的线程从所述等待队列移除并释放用于加锁处理的文件独占锁。
35.本发明实施例还公开了一种半导体工艺设备,所述半导体工艺设备上运行有日志组件和应用程序,所述日志组件,用于:
36.当所述日志组件被所述应用程序调用以对所述日志文件进行写日志时,判断待写入日志的生成日期与所述日志文件的生成日期是否相同;
37.若所述待写入日志的生成日期与所述日志文件的生成日期不同,则关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;
38.生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;
39.调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
40.本发明实施例包括以下优点:
41.在本发明实施例中,当日志组件被应用程序调用对日志文件进行写日志时,判断待写入日志的生成日期与日志文件的生成日期是否相同;若待写入日志的生成日期与日志文件的生成日期不同,则关闭与日志文件绑定的文件流对象,并解除文件流对象与日志文件的绑定关系;因此,在跨天记录时,通过关闭与前一天的日志文件绑定的文件流对象并解绑,使得前一天的日志文件不被锁定,从而实现对前一天的日志的压缩。之后,生成新的文件流对象和新的日志文件,并建立新的文件流对象与新的日志文件的绑定关系;调用针对文件流对象的接口,将待写入日志写入新的日志文件从而继续进行写日志。
附图说明
42.图1是本发明实施例提供的一种日志处理方法的步骤流程图;
43.图2是本发明实施例提供的一种日志组件启动流程图;
44.图3是本发明实施例提供的一种日志组件写日志流程图;
45.图4是本发明实施例提供的一种日志管理流程图;
46.图5是本发明实施例提供的一种多线程操作日志文件状态图;
47.图6是本发明实施例提供的一种半导体工艺设备的结构框图。
具体实施方式
48.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
49.当前大多数项目采用的是log4net日志管理框架,该框架是一套使用比较普遍的日志管理系统。主要功能包括日志分级功能、日志目的地配置、日志格式设置和日志功能扩展。
50.然而,在采用log4net日志框架在进行跨天记录时,如果日志记录器中没有新日志将无法触发生成新日志文件,日志文件锁仍然保留对上一天最后一个日志文件的独占写锁定,而日志压缩底层使用的是文件写操作,这样将导致该日志文件无法压缩备份。而且,在应用程序采用多线程且高频次写日志文件时,多线程使用log4net频繁的i/o调用容易引发复制内存时i/o争用的问题,且log4net频繁i/o调用是不安全的,这样终将导致日志记录错乱或丢失,不便于日志的管理。
51.跨天记录指今天的日志输出到了昨天的日志文件中,例如,昨天是2022-8-11,今天是2022-8-12日,日志输出文件是default.log,日志在连续输出时,出现了将2022-8-12日的日志打印到了default.log.2022-8-11中的情况。
52.流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为i/o流。换句话说,i/o流就是以流的方式进行输入输出。
53.本发明实施例的核心构思之一在于,在满足现有软件系统对日志框架基本要求的情况下,当日志记录跨天时,日志组件可以将当前文件流对象与对应的日志文件解绑,并重新生成新的文件流对象和日志文件并绑定,以及通过调用文件流对象将待写入日志写入新的日志文件,解决了log4net日志框架在跨天时日志由于被锁定而无法压缩备份的问题,避免了日志记录错乱和丢失的现象。
54.参照图1,示出了本发明实施例提供的一种日志处理方法的步骤流程图,应用于日志组件,所述方法具体可以包括如下步骤:
55.步骤101,当日志组件被应用程序调用以对日志文件进行写日志时,判断待写入日志的生成日期与所述日志文件的生成日期是否相同。
56.在本发明实施例中,日志组件可以是实现日志记录的组件,日志组件可以被应用程序调用对日志文件进行写日志。本发明的日志组件可以应用到多种领域中,本发明实施例以半导体工艺设备为例进行说明。
57.作为一种示例,本发明实施例的应用程序可以用于记录日志,其主要功能可以为生成日志文件、配置日志文件大小、配置日志文件保留天数、配置日志文件保留个数、自行压缩管理日志文件等等。
58.作为一种示例,日志文件在生成时会自带日期,可以通过判断当前待写入日志的生成日期是否与对应的待写入日志文件的生成日期相同。例如,如果今天日志的生成日期为2022-09-05,而对应记录的日志文件为xx.log.2022-09-04,则说明日志的生成日期和对应的日志文件的生成日期不同;如果今天日志的生成日期为2022-09-05,而对应记录的日志文件为xx.log.2022-09-05,则说明日志的生成日期和对应的日志文件的生成日期相同。
59.另外,本发明实施例中的日志组件可以应用于半导体设备的上位机,也可以应用于半导体设备的下位机,本发明实施例在此不做限制。
60.需要说明的是,上位机是指可以直接发出操控命令的计算机,下位机是可以直接控制设备获取设备状况的计算机。上位机发出的命令可以首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机可以实时读取设备状态数据,转换成数字信号反馈给上位机。
61.步骤102,若所述待写入日志的生成日期与所述日志文件的生成日期不同,则关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系。
62.作为一种示例,当昨天的日志文件还未达到预设文件大小时,今天的日志继续记录进了昨天的日志文件中,例如,预设文件大小为10m,昨天2022-09-04,23:59分时,日志文件大小为7m,今天2022-09-05,上午9:00生成的新的日志将继续记录在昨天的日志文件中,即此时待写入日志的生成日期与日志文件的生成日期不同。
63.作为一种示例,可以通过判断日志的生成日期和对应的日志文件的生成日期是否相同,来判断日志是否为跨天记录。若当前日志的生成日期和对应的日志文件的生成日期不同,则说明日志记录存在跨天。
64.示例性地,当待写入日志的生成日期与日志文件的生成日期不同时,日志组件可以解除关闭该日志文件绑定的文件流对象,并解除文件流对象与日志文件的绑定关系,进而在跨天记录时,通过关闭与前一天的日志文件绑定的文件流对象并解绑,使得前一天的日志文件锁被释放,从而实现对前一天的日志的压缩。
65.在本发明的一种实施例中,当日志组件启动时,调用所述日志组件的初始化接口,解析日志配置文件;所述日志配置文件包括日志类型;生成所述日志类型对应的文件流对象和对应的日志文件。
66.日志类型是指日志文件的类型,不同日志类型的日志文件可以设置为以不同格式记录日志数据。具体的,日志类型可以根据实际需要进行设定。例如,在半导体领域中,日志类型可以包括半导体设备消息日志(secs(semi equipment communication standard))、运行日志(trace)、错误日志(error)等等,例如,当需要记录半导体设备中的应用程序运行过程中的各种错误信息时,可以生成错误日志信息对应的文件流对象以及对应的错误日志文件。
67.文件流对象可以具有多种类型,分别对应多种日志类型。文件流对象可以设置为针对对应日志类型的日志文件进行写日志。
68.示例性地,当日志组件被应用程序引用并使用时,首先需要调用该日志组件的初始化接口,初始化接口会解析日志组件的配置文件,其中,日志配置文件包括日志类型,初始化接口可以生成各日志类型对应的文件流对象和对应的日志文件。
69.作为一种示例,当日志组件启动时,可以生成日志类型对应的文件流对象和对应的日志文件,并将生成的文件流对象绑定对应的日志文件。
70.作为一种示例,应用程序可以根据日志类型,生成对应的日志文件。例如,可以生成半导体设备消息日志文件、运行日志文件、错误日志文件等等。
71.作为一种示例,配置文件中可以包括日志类型、预设文件大小阈值、日志文件存放路径、预设文件数量阈值、预设文件保留天数阈值等等。
72.作为一种示例,可以按照日志运行过程中出现的各种状态进行分类,例如,日志可以分为运行日志、错误日志和消息日志,运行日志可以用于记录常规运行日志,错误日志可以用于记录发生错误的运行日志,消息日志可以用于记录收发消息的运行日志。
73.例如,可以把半导体所有模块的常规运行记录在运行日志里,运行日志里发生错误的日志单独记录在错误日志里,运行日志里收发消息的日志记录进消息日志里,从而日志记录更加连贯、完整。
74.也可以针对半导体设备不同的模块,定义该配置文件的不同的日志类型,可以按照半导体设备不同的模块进行分类,每个模块可以对应一个日志类型,可以按照单独模块运行日志组件记录日志,例如,半导体设备包括工艺模块、真空大气转换模块、冷却模块,可以按照模块在配置文件中定义工艺模块日志、真空大气转换模块日志、冷却模块日志等。
75.本发明的日志组件可以灵活地分类记录,本领域技术人员周知,上述日志的分类记录仅仅是本发明提供的一种实施例,本领域技术人员还可以采用其它方式进行分类日志记录,本发明实施例在此不作限制。
76.作为一种示例,如图2所示为本发明实施例提供的一种日志组件启动流程图。
77.s201,日志组件启动;
78.s202,解析日志配置文件;
79.s203,全局存储配置项(日志类型、预设文件大小阈值、日志文件存放路径、预设文件数量阈值、预设文件保留天数阈值等);
80.s204,生成日志类型对应的文件流对象和对应的日志文件;
81.s205,启动结束。
82.步骤103,生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系。
83.示例性地,可以生成新的文件流对象和新的日志文件,并将新的文件流对象与新的日志文件绑定,其中,文件流对象基于csharp语言的streamwriter类进行生成。
84.步骤104,调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
85.在本发明实施例中,可以采用csharp语言自带的系统类,将字符或字符串写入文件,来实现日志生成及书写,以实现日志管理框架的自主可控。
86.作为一种示例,半导体设备上位机可以引用该日志组件,通过该日志组件接口实现上位机运行日志组件的记录和管理。
87.示例性地,当日志组件写日志时,可以调用对应日志类型的文件流对象的接口(如写接口(writeline))的方法进行写日志。
88.接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。在本发明实施例中,文件流对象的接口可以包括写接口、读接口、释放接口、删除接口、压缩接口等等,以实现不同的日志文件处理功能。
89.作为一种示例,可以在写日志之前,判断当前日志是否为跨天记录,若为跨天记录,则可以关闭当前日志类型对应的文件流对象,并将文件流对象与对应的日志文件解绑,再生成新的文件流对象和新的日志文件,调用新的文件流对象对应的接口,进行写日志。
90.在本发明的一种实施例中,所述日志配置文件还包括预设日志文件大小阈值,所述方法还包括:若所述待写入日志的生成日期与所述日志文件的生成日期相同,且当所述日志文件大小超出所述预设日志文件大小阈值时,关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
91.示例性地,若待写入日志的生成日期与日志文件的生成日期相同,也即日志不是跨天记录时,可以判断当前日志文件大小是否超出预设文件大小阈值,如果当前日志文件大小没有超出预设文件大小阈值,则待写入日志可以继续写入当前日志文件;如果当前日志文件大小超出预设文件大小阈值,说明当前日志文件不能再记录日志,需要把待写入日志写入新的日志文件中,可以通过关闭与当前日志文件绑定的文件流对象并解绑,生成新的文件流对象和新的日志文件,并将新的文件流对象与新的日志文件绑定,调用针对所述文件流对象的接口,将待写入日志写入新的日志文件。
92.本发明采用的底层技术可以采用streamwriter,可以在日志达到配置文件中预设文件大小阈值(如:10mb)时生成新日志文件。
93.作为一种示例,如图3所示为本发明实施例提供的一种日志组件写日志流程图。
94.s301,日志记录;
95.s302,当前日志记录是否跨天和/或当前日志文件的大小是否大于预设文件大小阈值;
96.s303,若是跨天和/或当前日志文件的大小大于预设文件大小阈值,则关闭日志类型对应的文件流对象,并将日志文件与该文件流对象解绑;
97.s304,重新生成新的文件流对象和新的日志文件,并将新的日志文件绑定新的文件流对象;
98.s305,调用新生成的文件流对象接口将日志写入新生成的日志文件中;
99.s306,若不是跨天且日志文件的大小小于或等于预设文件大小阈值,则直接调用文件流对象接口将日志写入日志文件中;
100.s307,记录结束。
101.在本发明的一种实施例中,所述日志配置文件还包括日志文件存放路径,所述方法还包括:确定所述日志存放路径下达到所述预设日志文件大小阈值的日志文件;当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,调用所述文件流对象的删除接口,删除所述目标日志文件。
102.在本发明实施例中,可以将已生成的日志文件按照日志文件存放路径进行存放。
103.示例性地,当需要对已生成的日志文件进行管理时,首先确定日志存放路径下达到预设日志文件大小阈值的日志文件,当日志存放路径下达到预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,并调用文件流对象的删除接口,删除需要删除的目标日志文件。
104.在本发明的一种实施例中,所述日志配置文件还包括预设文件数量阈值;所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,包括:当所述日志存放路径下达到所述预设日志文件大小阈值的多个日志文件超出所述预设文件数量阈值时,确定所述多个日志文件生成时间的先后顺序,并根据所述日志文件生成时间的先后顺序,将超出所述预设文件数量阈值的日志文件确定为需要删除的目标日志文件。
105.在本发明实施例中,可以获取日志文件存放路径下的已生成的日志文件信息,已生成的日志文件信息包括日志文件当前时间和日志文件生成时间,可以按照日志文件生成时间的先后顺序对已生成的日志文件进行排序。
106.示例性地,当日志存放路径下达到所述预设日志文件大小阈值的多个日志文件的数量超出预设文件数量阈值时,可以确定多个日志文件生成时间的先后顺序,并根据日志文件生成时间的先后顺序,调用文件流对象的删除接口,删除超出预设文件数量阈值的日志文件。
107.例如,当达到所述预设日志文件大小阈值的日志文件个数大于预设文件数量阈值时,可以从生成时间最早的日志文件开始依次删除,直至剩余日志文件个数达到预设文件数量阈值时,停止删除。
108.在本发明的一种实施例中,所述日志配置文件还包括预设文件保留天数阈值;所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,还包括:当所述日志存放路径下达到所述预设日志文件
大小阈值的日志文件未超出所述预设文件数量阈值,且当前日期减去所述日志文件生成日期得到的天数大于所述预设文件保留天数阈值时,确定所述天数大于所述预设文件保留天数阈值的日志文件,并将所述天数大于所述预设文件保留天数阈值的日志文件确定为需要删除的目标日志文件。
109.示例性地,当日志存放路径下达到预设日志文件大小阈值的日志文件未超出预设文件数量阈值,且日志文件当前日期减去日志文件生成日期得到的天数大于预设文件保留天数阈值时,确定天数大于预设保留天数阈值的日志文件,并调用文件流对象的删除接口,将天数大于预设文件保留天数阈值的日志文件删除。
110.例如,若日志存放路径下已生成的日志文件未超出预设文件数量阈值,则可以继续判断日志文件当前日期减去日志文件生成日期得到的天数,是否大于预设文件保留天数阈值,若大于,则可以将天数大于预设文件保留天数阈值的日志文件依次删除。
111.本发明实施例可以通过调用文件流接口删除不需要的日志文件,减少了对用户磁盘空间的占用。
112.在本发明的一种实施例中,当待写入日志的生成日期与所述日志文件的生成日期不同时,确定所述日志文件为需要压缩的目标日志文件;和/或,当所述日志文件大小达到所述预设文件大小阈值时,确定所述日志文件为需要压缩的目标日志文件;调用所述文件流对象的压缩接口,压缩所述目标日志文件。
113.作为一种示例,可以日志跨天记录时将前一天的日志文件进行压缩和/或在日志文件大小达到预设文件大小阈值时开始压缩。但日志文件大小达到预设文件大小阈值的压缩条件的优先级,低于判断日志记录是否跨天的优先级,即低于待写入日志的生成日期与日志文件的生成日期不同压缩条件的优先级。
114.作为一种示例,还可以在当有新日志生成或系统软件重启时,压缩上一次或其它未压缩的日志文件。
115.作为一种示例,如图4所示为本发明实施例提供的一种日志管理流程图。
116.s401,开始日志管理;
117.s402,获取日志路径下的所有日志文件信息;
118.s403,按照日志文件生成日期的先后顺序排序;
119.s404,判断当前日志文件个数是否大于预设文件数量阈值;
120.s405,若大于预设文件数量阈值,则在排序后的文件中,从生成时间最早的文件依次删除。
121.s406,若小于或等于预设文件数量阈值,则判断日志文件当前日期减去生成日期得到的天数是否大于预设文件保留天数阈值;
122.s407,若大于预设文件保留天数阈值,则将符合条件的文件依次删除;
123.s408,若小于或等于预设文件保留天数阈值,则将未压缩的非当前操作的日志文件使用流压缩机制进行压缩;
124.s409,结束。
125.在本发明的一种实施例中,当所述日志组件被应用程序多个线程调用以对同一日志文件进行写日志时,基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件。
126.在本发明实施例中,当多个线程同时操作一个日志文件时,可以采用锁机制(lock(object)),以防止多线程操作文件引起的冲突。
127.作为一种示例,在半导体设备工艺的过程中,每个任务可对应一个线程。例如,机械手传片为一个线程,刻蚀工艺为另一个线程。机械手传片的线程可以记录第n片物料传到工艺腔室中放置物料的位置,刻蚀工艺的线程可以记录在工艺腔室对物料进行刻蚀工艺的工艺过程。这两个线程都会记录在运行日志中,会存在同时记录在运行日志中的情况,因此会存在多线程争用问题。
128.示例性地,当日志组件接收到应用程序多个线程的对同一日志文件进行写日志的调用请求时,可以基于预设规则对多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占日志文件并执行写日志操作。
129.在本发明的一种实施例中,所述基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件,包括:将所述多个线程放入等待队列中,将位于所述等待队列队首的线程进行加锁处理,以使所述被加锁处理的线程独占所述日志文件。
130.示例性地,可以将多个线程放入等待队列中,然后由操作系统安排队首线程占有文件独占锁并写日志。此时当线程在写日志时,执行写日志接口时,另外的线程将排队等待。
131.在本发明的一种实施例中,当所述被加锁处理的线程结束对所述日志文件写日志时,将所述被加锁处理的线程从所述等待队列移除并释放用于加锁处理的文件独占锁。
132.示例性地,当被加锁处理的线程结束对日志文件写日志时,可以释放独占锁,以使其它线程获取独占锁,并执行写日志。
133.作为一种示例,可以通过关闭日志文件释放独占锁,独占锁释放后的日志文件便于压缩管理。
134.作为一种示例,当应用程序多线程并发调用日志组件的写日志接口时,写日志接口内部实行了加锁处理,这样相对较早调用写日志接口的线程会通过该接口独占日志文件并执行写日志操作,其它的线程将排队等待,直到当前线程执行完写操作后,会释放该锁,然后依次直到所有线程执行完写日志操作。
135.例如,如图5所示为本发明实施例提供的一种多线程操作日志文件状态图,当线程1在写日志时,其余的线程可以排队等待,直至线程1执行完写操作后,释放该文件独占锁,然后由操作系统安排队首线程2占有该锁,锁定该日志文件,再进行写日志,线程2执行完写操作后,释放该文件独占锁并唤醒下一个线程执行写操作;如此循环至线程n-1占有该锁,锁定该日志文件,再进行写日志,线程n-1执行完写操作后,释放该文件独占锁并唤醒下一个线程n执行写操作,如此循环直到所有线程写完日志。本发明实施例使用多线程锁机制锁,可以防止多线程操作日志文件时,因i/o争用导致日志记录错乱和日志丢失问题。
136.在本发明实施例中,当日志组件被应用程序调用对日志文件进行写日志时,待写入日志的生成日期与日志文件的生成日期是否相同;若待写入日志的生成日期与日志文件的生成日期不同,则关闭与日志文件绑定的文件流对象,并解除文件流对象与日志文件的绑定关系;因此,在跨天记录时,通过关闭与前一天的日志文件绑定的文件流对象并解绑,使得前一天的日志文件不被锁定,从而实现对前一天的日志的压缩。之后,生成新的文件流
对象和新的日志文件,并建立新的文件流对象与新的日志文件的绑定关系;调用针对文件流对象的接口,将待写入日志写入新的日志文件从而继续进行写日志。不仅解决了log4net日志框架在跨天时日志无法压缩备份的问题,而且便于对底层架构进行维护和开发,后续还可以根据自身需要适当调整该日志组件配置或接口,以进一步满足自身特定需求。通过调用文件流对象的接口释放文件独占锁,在跨天时可控制文件锁的释放,以此保证日志的正常压缩和管理;可以通过流压缩机制压缩日志文件并采用文件流对象的接口删除不需要的日志文件,以减少对用户磁盘空间的占用;多线程下的日志记录采用线程独占锁,可防止因i/o争用导致日志记录错乱和日志丢失问题,弥补了多线程情况下log4net的使用缺陷。
137.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
138.参照图6,示出了本发明实施例提供的一种半导体工艺设备的结构框图,上述半导体工艺设备601上运行有日志组件6011和应用程序6012,上述日志组件,用于:
139.当上述日志组件被应用程序调用以对日志文件进行写日志时,判断待写入日志的生成日期与上述日志文件的生成日期是否相同;
140.若上述待写入日志的生成日期与上述日志文件的生成日期不同,则关闭与上述日志文件绑定的文件流对象,并解除上述文件流对象与上述日志文件的绑定关系;
141.生成新的文件流对象和新的日志文件,并建立上述新的文件流对象与上述新的日志文件的绑定关系;
142.调用针对上述文件流对象的接口,将上述待写入日志写入上述新的日志文件。
143.在本发明一个可选的实施例中,上述日志组件,还用于当上述日志组件启动时,调用上述日志组件的初始化接口,解析日志配置文件;上述日志配置文件包括日志类型;生成上述日志类型对应的文件流对象和日志文件,并绑定对应的上述文件流对象和上述日志文件。
144.在本发明一个可选的实施例中,上述日志配置文件还包括预设日志文件大小阈值,上述日志组件,还用于若上述待写入日志的生成日期与上述日志文件的生成日期相同,且当上述日志文件大小超出上述预设日志文件大小阈值时,关闭与上述日志文件绑定的文件流对象,并解除上述文件流对象与上述日志文件的绑定关系;生成新的文件流对象和新的日志文件,并建立上述新的文件流对象与上述新的日志文件的绑定关系;调用针对上述文件流对象的接口,将上述待写入日志写入上述新的日志文件。
145.在本发明一个可选的实施例中,上述日志配置文件还包括日志文件存放路径,上述日志组件,还用于确定上述日志存放路径下达到上述预设日志文件大小阈值的日志文件;当上述日志存放路径下达到上述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,调用上述文件流对象的删除接口,删除上述目标日志文件。
146.在本发明一个可选的实施例中,上述日志配置文件还包括预设文件数量阈值;上述日志组件,用于当上述日志存放路径下达到上述预设日志文件大小阈值的多个日志文件
超出上述预设文件数量阈值时,确定上述多个日志文件生成时间的先后顺序,并根据上述日志文件生成时间的先后顺序,将超出上述预设文件数量阈值的日志文件确定为需要删除的目标日志文件。
147.在本发明一个可选的实施例中,上述日志配置文件还包括预设文件保留天数阈值;上述日志组件,还用于当上述日志存放路径下达到上述预设日志文件大小阈值的日志文件未超出上述预设文件数量阈值,且当前日期减去上述日志文件生成日期得到的天数大于上述预设文件保留天数阈值时,确定上述天数大于上述预设文件保留天数阈值的日志文件,并将上述天数大于上述预设文件保留天数阈值的日志文件确定为需要删除的目标日志文件。
148.在本发明一个可选的实施例中,上述日志组件,还用于当待写入日志的生成日期与上述日志文件的生成日期不同时,确定上述日志文件为需要压缩的目标日志文件;和/或,当上述日志文件大小达到上述预设文件大小阈值时,确定上述日志文件为需要压缩的目标日志文件;调用上述文件流对象的压缩接口,压缩上述目标日志文件。
149.在本发明一个可选的实施例中,上述日志组件,还用于当上述日志组件被上述应用程序的多个线程调用以对同一日志文件进行写日志时,基于预设规则对上述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占上述日志文件。
150.在本发明一个可选的实施例中,上述日志组件,用于将上述多个线程放入等待队列中,将位于上述等待队列队首的线程进行加锁处理,以使上述被加锁处理的线程独占上述日志文件。
151.在本发明一个可选的实施例中,上述日志组件,还用于当上述被加锁处理的线程结束对上述日志文件写日志时,将上述被加锁处理的线程从上述等待队列移除并释放用于加锁处理的文件独占锁。
152.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
153.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
154.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
155.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能。
156.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
157.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
158.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
159.以上对本发明所提供的一种日志处理方法和半导体工艺设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种日志处理方法,其特征在于,应用于日志组件,所述方法包括:当日志组件被应用程序调用以对日志文件进行写日志时,判断待写入日志的生成日期与所述日志文件的生成日期是否相同;若所述待写入日志的生成日期与所述日志文件的生成日期不同,则关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。2.根据权利要求1所述的方法,其特征在于,还包括:当所述日志组件启动时,调用所述日志组件的初始化接口,解析日志配置文件;所述日志配置文件包括日志类型;生成所述日志类型对应的文件流对象和日志文件,并绑定对应的所述文件流对象和所述日志文件。3.根据权利要求2所述的方法,其特征在于,所述日志配置文件还包括预设日志文件大小阈值,所述方法还包括:若所述待写入日志的生成日期与所述日志文件的生成日期相同,且当所述日志文件大小超出所述预设日志文件大小阈值时,关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。4.根据权利要求3所述的方法,其特征在于,所述日志配置文件还包括日志文件存放路径,所述方法还包括:确定所述日志存放路径下达到所述预设日志文件大小阈值的日志文件;当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,调用所述文件流对象的删除接口,删除所述目标日志文件。5.根据权利要求4所述的方法,其特征在于,所述日志配置文件还包括预设文件数量阈值;所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,包括:当所述日志存放路径下达到所述预设日志文件大小阈值的多个日志文件超出所述预设文件数量阈值时,确定所述多个日志文件生成时间的先后顺序,并根据所述日志文件生成时间的先后顺序,将超出所述预设文件数量阈值的日志文件确定为需要删除的目标日志文件。6.根据权利要求5所述的方法,其特征在于,所述日志配置文件还包括预设文件保留天数阈值;所述当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件满足预设删除条件时,确定需要删除的目标日志文件,还包括:
当所述日志存放路径下达到所述预设日志文件大小阈值的日志文件未超出所述预设文件数量阈值,且当前日期减去所述日志文件生成日期得到的天数大于所述预设文件保留天数阈值时,确定所述天数大于所述预设文件保留天数阈值的日志文件,并将所述天数大于所述预设文件保留天数阈值的日志文件确定为需要删除的目标日志文件。7.根据权利要求3所述的方法,其特征在于,还包括:当待写入日志的生成日期与所述日志文件的生成日期不同时,确定所述日志文件为需要压缩的目标日志文件;和/或,当所述日志文件大小达到所述预设文件大小阈值时,确定所述日志文件为需要压缩的目标日志文件;调用所述文件流对象的压缩接口,压缩所述目标日志文件。8.根据权利要求1所述的方法,其特征在于,还包括:当所述日志组件被所述应用程序的多个线程调用以对同一日志文件进行写日志时,基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件。9.根据权利要求8所述的方法,其特征在于,所述基于预设规则对所述多个线程中的一个线程进行加锁处理,以使被加锁处理的线程独占所述日志文件,包括:将所述多个线程放入等待队列中,将位于所述等待队列队首的线程进行加锁处理,以使所述被加锁处理的线程独占所述日志文件。10.根据权利要求9所述的方法,其特征在于,还包括:当所述被加锁处理的线程结束对所述日志文件写日志时,将所述被加锁处理的线程从所述等待队列移除并释放用于加锁处理的文件独占锁。11.一种半导体工艺设备,其特征在于,所述半导体工艺设备上运行有日志组件和应用程序,所述日志组件,用于:当所述日志组件被所述应用程序调用以对所述日志文件进行写日志时,判断待写入日志的生成日期与所述日志文件的生成日期是否相同;若所述待写入日志的生成日期与所述日志文件的生成日期不同,则关闭与所述日志文件绑定的文件流对象,并解除所述文件流对象与所述日志文件的绑定关系;生成新的文件流对象和新的日志文件,并建立所述新的文件流对象与所述新的日志文件的绑定关系;调用针对所述文件流对象的接口,将所述待写入日志写入所述新的日志文件。
技术总结
本发明实施例提供了一种日志处理方法和半导体工艺设备,应用于日志组件,该方法包括:当日志组件被应用程序调用以对日志文件进行写日志时,判断待写入日志的生成日期与日志文件的生成日期是否相同;若待写入日志的生成日期与日志文件的生成日期不同,则关闭与日志文件绑定的文件流对象,并解除文件流对象与日志文件的绑定关系;因此,在跨天记录时,通过关闭与前一天的日志文件绑定的文件流对象并解绑,使得前一天的日志文件锁被释放,从而实现对前一天的日志的压缩。之后,生成新的文件流对象和新的日志文件,并建立新的文件流对象与新的日志文件的绑定关系;调用针对文件流对象的接口,将待写入日志写入新的日志文件从而继续进行写日志。行写日志。行写日志。
技术研发人员:
魏联辉
受保护的技术使用者:
北京北方华创微电子装备有限公司
技术研发日:
2022.09.27
技术公布日:
2022/12/30