CN107015948B - 一种日志信息格式化方法及系统 - Google Patents

一种日志信息格式化方法及系统 Download PDF

Info

Publication number
CN107015948B
CN107015948B CN201710157551.2A CN201710157551A CN107015948B CN 107015948 B CN107015948 B CN 107015948B CN 201710157551 A CN201710157551 A CN 201710157551A CN 107015948 B CN107015948 B CN 107015948B
Authority
CN
China
Prior art keywords
list
list set
data
type
character string
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
CN201710157551.2A
Other languages
English (en)
Other versions
CN107015948A (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.)
Xinjiang Zhuoqin Huizhi Technology Group Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710157551.2A priority Critical patent/CN107015948B/zh
Publication of CN107015948A publication Critical patent/CN107015948A/zh
Application granted granted Critical
Publication of CN107015948B publication Critical patent/CN107015948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3068Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种日志信息格式化方法及系统,所述方法先获取传统List集合格式日志文件中各元素的数据类型,基于各元素的数据类型,将所述List集合格式日志文件中各元素转化为字符串类型,并依次保存到同一字符串文件中。本发明具有如下有益效果:1、保证了过长字符的List集合格式日志文件内容输出时的完整性;2、能够直接获取所述List集合格式日志文件中各元素所包含的具体信息。

Description

一种日志信息格式化方法及系统
技术领域
本发明涉及数据管理技术领域,更具体地,涉及一种日志信息格式化方法及系统。
背景技术
目前,在现有的数据管理业务中,日志是一个必不可少的部分,通过对业务日志的分析处理,可以了解到业务的经营状况,同时在服务器出现问题的时候,也可以通过对日志进行分析找出问题所在,方便问题的解决。当前,日志文件都是以原始的格式存放于文件装置或者数据库装置,在对业务运营数据进行分析和统计的时候,需要对原始格式的日志数据文件进行分析处理,以得到想要的统计结果。传统的List日志文件只是一个简单的字符串文字,开发者调试查看日志文件时,需要将List日志文件进行输出,结合List文件中各元素的具体数据类型进行分析处理。
现有技术中的日志处理方法,通过建立一个脚本语言解释器,在该脚本语言解释器中直接封装日志格式化处理用函数;针对不同格式的脚本分别建立相应的日志处理脚本从而构成动态脚本库,在该日志处理脚本中各种格式化操作由上述的函数完成;载入具有一定格式的日志;根据所述日志的格式从动态脚本库中载入相应的日志处理脚本;由所述的脚本语言解释器解释执行载入的日志处理脚本,完成日志格式化操作并输出处理结果。
然而现有技术并没有很好地提出对传统的List日志文件进行格式化的方法,从而存在以下不足:1、在输出超长文字的List日志文件时,控制台会自动对超长文字进行截断处理,会导致部分日志内容信息的丢失;2、根据List日志文件无法直接获取所述List日志文件中元素的具体信息。
发明内容
本发明为克服上述问题或者至少部分地解决上述技术问题,提供一种日志信息格式化方法及系统。
根据本发明的一个方面,提供一种日志信息格式化方法,包括:
步骤1,当待处理日志文件为List集合时,获取所述List集合所包含各元素的数据类型;
步骤2,基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
进一步,所述获得所述List集合所包含各元素的数据类型的步骤前还包括:
对所述List集合中的各字符串进行截取,获得所述各元素。
进一步,所述步骤1中获得所述List集合所包含各元素的数据类型的步骤进一步包括:
当所述List集合内待获取数据类型的任一元素为List集合时,依次获取所述任一元素所包含各元素的数据类型。
进一步,所述基于所述元素的描述信息,获取该元素的数据类型的步骤进一步包括:
获取所述元素字符串中的特征字符,根据所述特征字符所对应的数据类型,获得该元素的数据类型。
进一步,所述对所述List集合中的各字符串进行截取的步骤进一步包括:通过依次定位所述List集合中各字符串起始字符与结束字符,对所述List集合中各字符串进行截取。
进一步,所述获取所述元素字符串中的特征字符的步骤进一步包括:在所述元素字符串的预设位置获取相应的特征字符。
进一步,所述步骤1中,通过判断所述待处理日志文件内所含变量为数组,从而判断所述待处理日志文件为List集合。
进一步,还包括:
步骤1’,当待处理日志文件为JSON格式时,当所述JSON格式日志文件中字符串以"{"开头,则获取该字符串中所包含的元素,并通过4字节缩进的方式获取所述JSON格式日志文件中所包含的所有元素。
根据本发明的一个方面,提供一种日志信息格式化系统,包括:
获取模块,用于当待处理日志文件为List集合时,获取所述List集合所包含各元素的数据类型;
格式化模块,用于基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
本申请提出一种日志信息格式化方法及系统,所述方法先获取传统List集合格式日志文件中各元素的数据类型,基于各元素的数据类型,将所述List集合格式日志文件中各元素转化为字符串类型,并依次保存到同一字符串文件中。本发明具有如下有益效果:1、保证了过长字符的List集合格式日志文件内容输出时的完整性;2、能够直接获取所述List集合格式日志文件中各元素所包含的具体信息。
附图说明
图1为根据本发明实施例一种日志信息格式化方法的整体流程示意图;
图2为根据本发明实施例一种日志信息格式化系统的整体框架示意图;
图3为根据本发明实施例一种日志信息格式化方法的设备的结构框架示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本方案对日志的格式化是日志组件内部自动实现的,对于使用该组件的人来说内部的格式化方法是透明的,也就是不可见的。只需要简单的函数调用就能够将日志文件进行完整的格式化输出。
如图1,示出本发明一个具体实施例中一种日志信息格式化方法整体流程示意图。总体上,包括以下步骤:
步骤1,当待处理日志文件为List集合时,获得所述List集合所包含各元素的数据类型;
步骤2,基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述获得所述List集合所包含各元素的数据类型的步骤前还包括:
对所述List集合中的各字符串进行截取,获得所述各元素。
在编程语言中List是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。List的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。List是类库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。List以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态例如:它可以是一个放置整数(int)型态的List、也可以是放置字串(char或string)型态的List、或者放置使用者自定类别(user-defined class)的List。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述步骤1中获得所述List集合所包含各元素的数据类型的步骤进一步包括:
当所述List集合内待获取数据类型的任一元素为List集合时,依次获取所述任一元素所包含各元素的数据类型。
在上述本发明具体实施例中,List集合中所包含的元素可能为另一个List,同理,这个被包含的List中同样也包含有List和各种元素。所以,当对母List进行处理的过程中,如果遇到子List,那么对该子List执行与母List相同的处理操作,循环往复,直至日志文件中所包含的所有包含日志信息的元素信息的数据类型被获取。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述元素的数据类型通过以下步骤获取:基于所述元素的描述信息,获取该元素的数据类型。
在本发明实施例中,当List集合内待获取数据类型的元素不是List集合,而是直接包含具体日志信息的元素时,那么通过获取该元素的描述信息,基于所述元素的描述信息,获得该元素的数据类型。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述基于所述元素的描述信息,获取该元素的数据类型的步骤进一步包括:
获取所述元素字符串中的特征字符,根据所述特征字符所对应的数据类型,获得该元素的数据类型。
在本发明具体实施例中,先期在所述元素的描述信息的特定位置设置一个特征字符,所述各特征字符对应一种数据类型,各种元素所可能数据类型互不相同;当需要判断元素的数据类型时,通过获取所述元素的描述信息中的标记信息,根据所述标记信息找到其所对应的数据类型,从而获得该元素的数据类型。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述对所述List集合中的各字符串进行截取的步骤进一步包括:通过依次定位所述List集合中各字符串起始字符与结束字符,对所述List集合中各字符串进行截取。
本发明具体实施例中上述字符串的截取步骤可以利用但不限于substring()函数进行实现,能够实现如下功能:返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述获取所述元素字符串中的特征字符的步骤进一步包括:在所述元素字符串的预设位置获取相应的特征字符。
在本发明另一个具体实施例中,一种日志信息格式化方法,所述步骤1中,通过判断所述待处理日志文件内所含变量为数组,从而判断所述待处理日志文件为List集合。
本发明具体实施例中上述日志内所包含变量的判断能够但不限于isArray()函数,以用于返回值指明某变量是否为数组。
在本发明另一个具体实施例中,一种日志信息格式化方法,还包括:
步骤1’,当待处理日志文件为JSON格式时,当所述JSON格式日志文件中字符串以"{"开头,则获取该字符串中所包含的元素,并通过4字节缩进的方式获取所述JSON格式日志文件中所包含的所有元素。
在本发明上述具体实施例中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
在本发明另一个具体实施例中,一种日志信息格式化方法,包括:
对于List集合的格式化首先对比一下格式化输出和非格式化输出的差异性。
非格式化输出:
Lcom.tool.log.example.model.man;@a06e507;
格式化后的输出:
Figure BDA0001247555630000071
Figure BDA0001247555630000081
通过对比发现非格式化的集合数据进行输出的时候是无法将集合类的内容进行输出的。如果需要输出集合中的具体信息还需要解析结合类的数据然后一条一条的打印出来,这样非常麻烦且浪费时间。
对比观察发现格式化后的数据是能够正常输出相关数据的,并且数据格式清晰,日志内容信息一目了然,极大的提高了调试代码的效率。接下来描述一下是如何将集合List中的数据进行格式化输出的方法。
下面就本发明具体实施例一种日志信息格式化方法的具体步骤进行说明:
List里面的数据是可以是多种类型的,为了将List中的数据进行格式的输出,首先得要判断List内的数据类型,判断List内的数据类型的方法是通过自定义函数StringgetType(List List)来进行实现的。
自定义函数String getType(List List)中将集合List传递到getType函数中,getTpye函数通过判定后将判定结果以String的形式进行返回。然后通过for循环的形式for(int i=0;i<List.size();i++)来遍历List中的所有数据,然后对每一个元素调用getType函数来确定该元素的数据类型。
对于集合中的元素调用toString()方法的时候该函数会返回元素的描述信息,元素的描述信息有如下特性,如果是整数[int]则会以“[I”开头,如果是double类型的则会以“[D”开头,如果是boolean类型的则会以“Z”开头,如果是byte类型的则会以“[B”开头,如果是short类型的则会以“[S”开头,如果是long类型的则会以“[J”开头,如果是float类型的则会以“[F”开头,如果是List类型的则会以“[L”开头。
getType的实现逻辑如下:
首先通过isArray(object)函数来判断该元素是不是一个List,如果是一个List需要对这个List进行递归调用,也就是对这个List需要进行上述类似的处理逻辑流程。如果该元素不是一个List那么就可以通过解析其toString方法的开头字母来判定该元素是属于什么类型的元素。
解析元素中的toString方法是通过调用substring字符串截取函数来对字符串进行截取操作的。具体是通过substring(str.IndexOf("[")+1,str.IndexOf("[")+2).charAt(0)方法来截取首个字符串的。Substring函数总共有2个参数,第一个是起始位置,第二个是截止位置,本方案中的其实位置是通过调用str.IndexOf("[")+1方法来获取的,其中str.IndexOf("[")会返回“[”符号出现的索引位置,索引位置+1就是“[”符号出现的位置信息。str.IndexOf("[")+2使结束的位置信息,最后通过调用charAt(0)来获取该截取后的第一个字符串,这样就能够获取到元素中的类型信息了。
对于List集合遍历循环过程中每次判定完成一个元素的类型后需要将该元素转换成String类型的数据进行输出。具体的转换逻辑是
如果是”I”,那么表明该数据类型是int类型,就通过result.append(Arrays.toString((int[])array));将数据存储到result字符串中。
如果是”D”,那么表明该数据类型是double类型,就通过result.append(Arrays.toString((double[])array));将数据存储到result字符串中。
如果是”Z”,那么表明该数据类型是boolean类型,就通过result.append(Arrays.toString((boolean[])array));将数据存储到result字符串中。
如果是”B”,那么表明该数据类型是byte类型,就通过result.append(Arrays.toString((byte[])array));将数据存储到result字符串中。
如果是”S”,那么表明该数据类型是short类型,就通过result.append(Arrays.toString((short[])array));将数据存储到result字符串中。
如果是”F”,那么表明该数据类型是float类型,就通过result.append(Arrays.toString((float[])array));将数据存储到result字符串中。
通过上述的类型的判定和结果append(添加)的方式最终List集合中的所有数据全部都被保存到result这个变量中了。然后将result的相关内容进行输出即可。
本具体实施例通过List元素中的标示符来智能判定元素的数据类型,根据不同元素的数据类然后调用不同的append函数将解析好的数据添加到result变量中,使用代码实现全自动的List数据格式化并封装的过程,这样就提高了输出日志的阅读性。同时也降低了开发者去自己打印日志数据自己格式化的过程,使用起来更加简洁方便。
在本发明另一个具体实施例中,一种日志信息格式化方法,包括:
对于JSON首先来对比一下格式化输出和非格式化输出的形式非格式化:
D/test:{‘flag’:true,’user’:{‘id’:32767,’name’:{‘id’:32768}}}
格式化输出:
Figure BDA0001247555630000111
可以很明显的看到格式化输出的效果对比没有格式化输出的效果更容易让人理解。大大提高了日志的阅读性。可以很大程度上提升程序的开发效率。
接下来分析一下JSON格式化输出的过程。
首先通过if(JSONStr.startsWith("{"))来判断JSONStr是不是以“{”开头的,如果是以"{"开头的表示是JSON中的元素的开始位置,此时就获取该元素并对该元素实现4个字节的缩进。
具体是通过JSONObject JSONObject=new JSONObject(JSONStr);来件JSONStr转换成一个JSONObject对象,JSONObject是对JSON的一种抽象描述。然后对该JSONObject元素调用JSON=JSONObject.toString(4);来实现4字节缩进。
通过上述逻辑的不断递归这样就能够将原始字符串进行格式化城上述所示的字符串的展现形式了。然后对最终格式化完成的数据进行输出就能够得到所示的形式来展示数据。
JSON数据格式的展现形式变得更加容易阅读,提高了程序的调试速度可开发效率。同时为数据化格式化后变得更加美观清晰,能够很快定位键值对的相关信息内容。
如图2,示出本发明另一个具体实施例中,一种日志信息格式化系统,包括:
获取模块A1,用于当待处理日志文件为List集合时,获取所述List集合所包含各元素的数据类型;
格式化模块A2,用于基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:对所述List集合中的各字符串进行截取,获得所述各元素。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:当所述List集合内待获取数据类型的任一元素为List集合时,依次获取所述任一元素所包含各元素的数据类型。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:基于所述元素的描述信息,获取该元素的数据类型。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:获取所述元素字符串中的特征字符,根据所述特征字符所对应的数据类型,获得该元素的数据类型。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:通过依次定位所述List集合中各字符串起始字符与结束字符,对所述List集合中各字符串进行截取。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:在所述元素字符串的预设位置获取相应的特征字符。
在本发明另一个具体实施例中,一种日志信息格式化系统,所述获取模块还用于:通过判断所述待处理日志文件内所含变量为数组,从而判断所述待处理日志文件为List集合。
在本发明另一个具体实施例中,一种日志信息格式化系统,还包括:JSON格式化模块,用于:当待处理日志文件为JSON格式时,当所述JSON格式日志文件中字符串以"{"开头,则获取该字符串中所包含的元素,并通过4字节缩进的方式获取所述JSON格式日志文件中所包含的所有元素。
图3示出本申请实施例的日志信息格式化方法的设备的结构框图。
参照图3,所述日志信息格式化方法的设备,包括:处理器(processor)301、存储器(memory)302、通信接口(Communications Interface)303和总线304;
其中,
所述处理器301、存储器302、通信接口303通过所述总线304完成相互间的通信;
所述通信接口303用于该设备与日志信息格式化方法的通信设备之间的信息传输;
所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:当待处理日志文件为List集合时,获得所述List集合所包含各元素的数据类型;基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:当待处理日志文件为List集合时,获得所述List集合所包含各元素的数据类型;基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:当待处理日志文件为List集合时,获得所述List集合所包含各元素的数据类型;基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的直播重连方法的测试设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本申请的系统仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种日志信息格式化方法,其特征在于,包括:
步骤1,当待处理日志文件为List集合时,获取所述List集合所包含各元素的数据类型;
步骤2,基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中;
所述元素的数据类型通过以下步骤获取:基于所述元素的描述信息,获取该元素的数据类型;
所述基于所述元素的描述信息,获取该元素的数据类型的步骤进一步包括:
获取元素字符串中的特征字符,根据所述特征字符所对应的数据类型,获得该元素的数据类型;
其中,所述元素的描述信息的预设位置设置有一个特征字符,所述特征字符对应一种数据类型;
获取所述List集合所包含各元素的数据类型,包括:
通过自定义函数将集合List传递到getType函数中,getTpye函数通过判定后将判定结果以String的形式进行返回,然后通过for循环的形式遍历List中的所有数据,然后对每一个元素调用getType函数来确定该元素的数据类型;
getType的实现逻辑如下:
通过isArray(object)函数来判断元素是不是一个List,如果是一个List,对这个List进行递归调用,如果该元素不是一个List,则通过解析toString方法的开头字母来判定元素的类型;
对于List集合遍历循环过程中每次判定完成一个元素的类型后,将该元素转换成String类型的数据进行输出;
其中,对于集合中的元素调用toString()方法返回元素的描述信息。
2.如权利要求1所述的方法,其特征在于,所述获取所述List集合所包含各元素的数据类型的步骤前还包括:
对所述List集合中的各字符串进行截取,获得所述各元素。
3.如权利要求1所述的方法,其特征在于,所述步骤1中获取所述List集合所包含各元素的数据类型的步骤进一步包括:
当所述List集合内待获取数据类型的任一元素为List集合时,依次获取所述任一元素所包含各元素的数据类型。
4.如权利要求2所述的方法,其特征在于,所述对所述List集合中的各字符串进行截取的步骤进一步包括:通过依次定位所述List集合中各字符串起始字符与结束字符,对所述List集合中各字符串进行截取。
5.如权利要求1所述的方法,其特征在于,所述步骤1中,通过判断所述待处理日志文件内所含变量为数组,从而判断所述待处理日志文件为List集合。
6.如权利要求1所述的方法,其特征在于,还包括:
步骤1’,当待处理日志文件为JSON格式时,当所述JSON格式日志文件中字符串以"{"开头,则获取该字符串中所包含的元素,并通过4字节缩进的方式获取所述JSON格式日志文件中所包含的所有元素。
7.一种日志信息格式化系统,其特征在于,包括:
获取模块,用于当待处理日志文件为List集合时,获取所述List集合所包含各元素的数据类型;
格式化模块,用于基于所述List集合所包含各元素的数据类型,将所述List集合日志文件中各元素转换为字符串类型,并依次保存到同一字符串文件中;
所述获取模块还用于:基于所述元素的描述信息,获取该元素的数据类型;
所述获取模块还用于:获取元素字符串中的特征字符,根据所述特征字符所对应的数据类型,获得该元素的数据类型;
其中,所述元素的描述信息的预设位置设置有一个特征字符,所述特征字符对应一种数据类型;
获取所述List集合所包含各元素的数据类型,包括:
通过自定义函数将集合List传递到getType函数中,getTpye函数通过判定后将判定结果以String的形式进行返回,然后通过for循环的形式遍历List中的所有数据,然后对每一个元素调用getType函数来确定该元素的数据类型;
getType的实现逻辑如下:
通过isArray(object)函数来判断元素是不是一个List,如果是一个List,对这个List进行递归调用,如果该元素不是一个List,则通过解析toString方法的开头字母来判定元素的类型;
对于List集合遍历循环过程中每次判定完成一个元素的类型后,将该元素转换成String类型的数据进行输出;
其中,对于集合中的元素调用toString()方法返回元素的描述信息。
CN201710157551.2A 2017-03-16 2017-03-16 一种日志信息格式化方法及系统 Active CN107015948B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710157551.2A CN107015948B (zh) 2017-03-16 2017-03-16 一种日志信息格式化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710157551.2A CN107015948B (zh) 2017-03-16 2017-03-16 一种日志信息格式化方法及系统

Publications (2)

Publication Number Publication Date
CN107015948A CN107015948A (zh) 2017-08-04
CN107015948B true CN107015948B (zh) 2021-05-28

Family

ID=59440378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710157551.2A Active CN107015948B (zh) 2017-03-16 2017-03-16 一种日志信息格式化方法及系统

Country Status (1)

Country Link
CN (1) CN107015948B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795168B (zh) * 2018-08-02 2022-11-11 武汉斗鱼网络科技有限公司 一种获取数据的方法及相关装置
CN111626018B (zh) * 2019-02-28 2023-07-28 北京数聚鑫云信息技术有限公司 一种构建json格式化数据的方法及装置
CN111144086B (zh) * 2019-12-20 2023-03-21 锐捷网络股份有限公司 一种日志格式化方法及装置、电子设备、存储介质
CN111930586B (zh) * 2020-06-17 2022-05-17 珠海格力电器股份有限公司 一种获取数据的方法、装置、设备及计算机可读介质
CN112181773A (zh) * 2020-09-29 2021-01-05 银盛支付服务股份有限公司 一种自动化收集模块日志的方法
CN112445937B (zh) * 2020-11-30 2023-11-14 成都新潮传媒集团有限公司 一种Json日志的生成方法、装置及计算机可读存储介质
CN112560395A (zh) * 2020-12-24 2021-03-26 凌云光技术股份有限公司 一种用于文本中包含数据进行格式化的装置及方法
CN113642311B (zh) * 2021-08-12 2023-09-05 北京奇艺世纪科技有限公司 一种数据对比方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
java List集合转字符串toString方法;ab蓝学网;《ab蓝学网》;20151027;第1-2页 *

Also Published As

Publication number Publication date
CN107015948A (zh) 2017-08-04

Similar Documents

Publication Publication Date Title
CN107015948B (zh) 一种日志信息格式化方法及系统
CN108073391B (zh) 一种json字符串传输、处理的方法及设备
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
CN115061721A (zh) 一种报表生成方法、装置、计算机设备及存储介质
CN111679979B (zh) 破坏性测试方法及装置
CN111581920A (zh) 文档转换方法、装置、设备及计算机存储介质
CN108664546B (zh) Xml数据结构转换方法和装置
CN111782117B (zh) 界面的展示方法和装置、存储介质、电子装置
US20080313291A1 (en) Method and apparatus for encoding data
CN116521621A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN116483850A (zh) 数据处理方法、装置、设备以及介质
CN112069305B (zh) 数据筛选方法、装置及电子设备
CN114168149A (zh) 一种数据转换方法及装置
US9529573B2 (en) Graphical user interface generation through use of a binary file
CN109857735B (zh) 一种通过excel进行规则描述的数据构造方法及系统
CN113127776A (zh) 面包屑路径生成方法、装置及终端设备
CN116775488A (zh) 异常数据确定方法、装置、设备、介质及产品
CN116414689A (zh) 一种基于反射机制的接口参数校验方法及系统
CN114528218A (zh) 测试程序的生成方法、装置、存储介质以及电子设备
CN113536762A (zh) Json文本的比对方法及装置
CN113050935A (zh) 生成混入对象的方法、装置、计算设备及计算机可读存储介质
CN113177389A (zh) 文本处理方法、装置、电子设备及存储介质
CN109992293B (zh) Android系统组件版本信息的组装方法及装置
CN113408250B (zh) 一种项目文件的处理方法和装置
CN109933573B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240319

Address after: Room 2306, Building A, Chuangzhi Building, Xinjiang Software Park, No. 455 Kanas Hubei Road, Urumqi Economic and Technological Development Zone (Toutunhe District), Xinjiang Uygur Autonomous Region, 830057

Patentee after: Xinjiang Zhuoqin Huizhi Technology Group Co.,Ltd.

Country or region after: Zhong Guo

Address before: 430000 Wuhan Donghu Development Zone, Wuhan, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: Zhong Guo