一种利用log4j分文件的日志输出方法和装置的制造方法

文档序号:10569830阅读:182来源:国知局
一种利用log4j分文件的日志输出方法和装置的制造方法
【专利摘要】本发明涉及一种利用log4j分文件的日志输出方法和装置,包括:获取操作员编码和用户编码;将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值;根据所述操作员哈希值得到操作员数据项;根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例;调用所述用户元素中的输出目的地实例写日志。本发明根据操作员编码和用户编码可以快速查找到log4j的日志实例,从而把日志写入各自的文件中。
【专利说明】
_种利用log4_j分文件的日志输出方法和装置
技术领域
[0001]本发明涉及计算机领域,特别是涉及一种利用log4j分文件的日志输出方法和装置。
【背景技术】
[0002]在java中,通常使用log4j(—种开放源代码的写日志工具)写日志文件。用log4j输出的日志都在一个文件,当需要在线跟踪查看日志文件、日志内容时,日志文件与日志内容交替出现,对错误地方的定位带来诸多不便。

【发明内容】

[0003]本发明所要解决的技术问题是提供一种利用log4j分文件的日志输出方法和装置。
[0004]本发明解决上述技术问题的技术方案如下:一种利用log4j分文件的日志输出方法,包括:
[0005]获取操作员编码和用户编码;
[0006]将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值;
[0007]根据所述操作员哈希值得到操作员数据项;
[0008]根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例;
[0009]调用所述用户元素中的输出目的地实例写日志。
[0010]本发明的有益效果是:根据操作员编码和用户编码可以快速查找到log4j的日志实例,从而把日志写入各自的文件中。
[0011]在上述技术方案的基础上,本发明还可以做如下改进。
[0012]进一步,所述根据所述操作员哈希值得到操作员数据项包括:
[0013]操作员哈希值按照第一分割指数进行取余得到操作员余值;
[0014]从操作员数组中获取所述操作员余值对应的操作员链表;
[0015]判断所述操作员链表中是否存在数据;
[0016]如果所述操作员链表中不存在数据,则生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置;
[0017]如果所述操作员链表中存在数据,则从所述操作员链表中查找操作员编码对应的操作员元素;
[0018]判断所述操作员元素是否存在;
[0019]如果所述操作员元素存在,则所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表;
[0020]如果所述操作员元素不存在,则生成所述操作员数据项。
[0021]进一步,所述生成操作员数据项包括:
[0022]生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中;
[0023]将当前时间、所述操作员编码放入所述新操作员元素中;
[0024]生成多个用户数组,将所述多个用户数组存入所述新操作员元素中;
[0025]根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。
[0026]进一步,所述根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例包括:
[0027]判断用户链表是否存在;
[0028]如果所述用户链表存在,则从所述用户链表中查找用户编码对应的用户元素;
[0029]如果所述用户链表不存在,则生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置;
[0030]判断用户元素是否存在;
[0031]如果所述用户元素存在,则获取所述用户元素中的输出目的地实例;
[0032]如果所述用户元素不存在,则根据生成的新用户元素获取所述用户元素中的输出目的地实例。
[0033]进一步,所述根据生成的新用户元素获取所述用户元素中的输出目的地实例包括:
[0034]将所述新用户元素加入所述新用户链表中;
[0035]将所述用户编码加入所述新用户元素中;
[0036]根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。
[0037]本发明解决上述技术问题的另一技术方案如下:一种利用log4j分文件的日志输出装置,包括:
[0038]编码获取单元,用于获取操作员编码和用户编码;
[0039]哈希运算单元,用于将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值;
[0040]操作员数据项获取单元,根据所述操作员哈希值得到操作员数据项;
[0041]输出目的地实例获取单元,用于根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例;
[0042]调用单元,用于调用所述用户元素中的输出目的地实例写日志。
[0043]本发明的有益效果是:根据操作员编码和用户编码可以快速查找到log4j的日志实例,从而把日志写入各自的文件中。
[0044]在上述技术方案的基础上,本发明还可以做如下改进。
[0045]进一步,所述操作员数据项获取单元包括:
[0046]操作员哈希值按照第一分割指数进行取余得到操作员余值;
[0047]从操作员数组中获取所述操作员余值对应的操作员链表;
[0048]判断所述操作员链表中是否存在数据;
[0049]如果所述操作员链表中不存在数据,则生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置;
[0050]如果所述操作员链表中存在数据,则从所述操作员链表中查找操作员编码对应的操作员元素;
[0051 ]判断所述操作员元素是否存在;
[0052]如果所述操作员元素存在,则所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表;
[0053]如果所述操作员元素不存在,则生成所述操作员数据项。
[0054]进一步,所述操作员数据项获取单元还包括:
[0055]生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中;
[0056]将当前时间、所述操作员编码放入所述新操作员元素中;
[0057]生成多个用户数组,将所述多个用户数组存入所述新操作员元素中;
[0058]根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。
[0059]进一步,所述输出目的地实例获取单元包括:
[0060]判断用户链表是否存在;
[0061]如果所述用户链表存在,则从所述用户链表中查找用户编码对应的用户元素;
[0062]如果所述用户链表不存在,则生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置;
[0063]判断用户元素是否存在;
[0064]如果所述用户元素存在,则获取所述用户元素中的输出目的地实例;
[0065]如果所述用户元素不存在,则根据生成的新用户元素获取所述用户元素中的输出目的地实例。
[0066]进一步,所述输出目的地实例获取单元还包括:
[0067]将所述新用户元素加入所述新用户链表中;
[0068]将所述用户编码加入所述新用户元素中;
[0069]根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。
【附图说明】
[0070]图1为本发明实施例提供的一种利用log4j分文件的日志输出方法流程图;
[0071 ]图2为本发明实施例提供的获取操作员数据项的流程图;
[0072]图3为本发明实施例提供的获取用户元素中的输出目的地实例流程图;
[0073]图4为本发明实施例提供的另一种利用log4j分文件的日志输出方法流程图;
[0074]图5为本发明实施例提供的一种利用log4j分文件的日志输出装置示意图。
[0075]附图中,各标号所代表的部件列表如下:
[0076]1、编码获取单元,2、哈希运算单元,3、操作员数据项获取单元,4、输出目的地实例获取单元,5、调用单元。
【具体实施方式】
[0077]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0078]图1为本发明实施例提供的利用log4j分文件的日志输出方法流程图。
[0079]参照图1,步骤SlOl,获取操作员编码和用户编码。
[0080]步骤S102,将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值。
[0081]步骤S103,根据所述操作员哈希值得到操作员数据项。
[0082]步骤S104,根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例。
[0083]步骤S105,调用所述用户元素中的输出目的地实例写日志。
[0084]在本实施例中,作为对图1所示实现方式的细化,本发明另一实施例还提供了一种获取操作员数据项的流程图。具体的,如图2所示,该方法包括:
[0085]步骤S201,操作员哈希值按照第一分割指数进行取余得到操作员余值。
[0086]步骤S202,从操作员数组中获取所述操作员余值对应的操作员链表。
[0087]步骤S203,判断所述操作员链表中是否存在数据,如果所述操作员链表中不存在数据,则执行步骤S204;如果所述操作员链表中存在数据,则执行步骤S205。
[0088]步骤S204,生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置。
[0089]步骤S205,从所述操作员链表中查找操作员编码对应的操作员元素。
[0090]步骤S206,判断所述操作员元素是否存在,如果所述操作员元素存在,则执行步骤S207;如果所述操作员元素不存在,则执行步骤S208。
[0091]步骤S207,所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表;
[0092]步骤S208,生成所述操作员数据项。
[0093]在本实施例中,所述生成操作员数据项包括:
[0094]生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中;
[0095]将当前时间、所述操作员编码放入所述新操作员元素中;
[0096]生成多个用户数组,将所述多个用户数组存入所述新操作员元素中;
[0097]根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。
[0098]在本实施例中,作为对图1所示实现方式的细化,本发明另一实施例还提供了一种获取用户元素中的输出目的地实例的流程图。具体的,如图3所示,该方法包括:
[0099]步骤S301,判断用户链表是否存在,如果所述用户链表存在,则执行步骤S302;如果所述用户链表不存在,则执行步骤S303。
[0100]步骤S302,从所述用户链表中查找用户编码对应的用户元素。
[0101]步骤S303,生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置。
[0102]步骤S304,判断用户元素是否存在,如果所述用户元素存在,则执行步骤S305;如果所述用户元素不存在,则执行步骤S306。
[0103]步骤S305,获取所述用户元素中的输出目的地实例。
[0104]步骤S306,根据生成的新用户元素获取所述用户元素中的输出目的地实例。
[0105]在本实施例中,所述根据生成的新用户元素获取所述用户元素中的输出目的地实例包括:
[0106]将所述新用户元素加入所述新用户链表中;
[0107]将所述用户编码加入所述新用户元素中;
[0108]根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。
[0109]图4为本发明实施例提供的另一种利用log4j分文件的日志输出方法流程图。
[0110]参照图4,步骤SI,获取操作员编码和用户编码。
[0111]步骤S2,将操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值。
[0112]这里,哈希运算如公式I所示:
[0113]s[0]*ir(n-l)+s[l]*ir(n-2) +...+s[n-l]) (I)
[0114]其中,s[0]、s[l]...s[n-l]为数组值,η为系数。
[0115]例如:操作员编码为abc,则哈希值为12914;用户编码为123,则哈希值为6530。
[0116]步骤S3,操作员哈希值按照第一分割指数进行取余得到操作员余值。
[0117]这里,第一分割指数可以为100,但不限于100。操作员余值为14。
[0118]步骤S4,从操作员数组中获取所述操作员余值对应的操作员链表。
[0119]这里,获取14号操作员链表。
[0120]步骤S5,判断所述操作员链表中是否存在数据,如果存在数据,则执行步骤S16;如果不存在数据,则执行步骤S6。
[0121 ]步骤S6,生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置。
[0122]步骤S7,生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中。
[0123]步骤S8,将当前时间、所述操作员编码放入所述新操作员元素中。
[0124]步骤S9,生成多个用户数组,将所述多个用户数组存入所述新操作员元素中。
[0125]这里,可以为10个用户数组。
[0126]步骤SlO,用户哈希值按照第二分割指数进行取余得到用户余值。
[0127]这里,第二分割指数可以为10,但不限于10。
[0128]步骤Sll,生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置。
[0129]步骤S12,将所述新用户元素加入所述新用户链表中。
[0130]步骤S13,将所述用户编码加入所述新用户元素中。
[0131]步骤S14,调用log4j的输出目的地实例,并打开日志文件,将实例放入用户元素中。
[0132]步骤S15,调用log4j用户元素中的输出目的地实例写日志。
[0133]步骤S16,从所述操作员链表中查找操作员编码对应的操作员元素。
[0134]步骤S17,判断所述操作员元素是否存在,如果操作员元素存在,则执行步骤S18;如果操作员元素不存在,则执行步骤S7、S8和S9。
[0135]步骤S18,用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表
[0136]步骤S19,判断用户链表是否存在,如果存在,则执行步骤S20;如果不存在,则执行步骤 S11、S12 和 S13。
[0137]步骤S20,从所述用户链表中查找用户编码对应的用户元素。
[0138]步骤S21,判断用户元素是否存在,如果存在,则执行步骤S22
[0139]步骤S22,获取所述用户元素中的输出目的地实例,并执行步骤S15。
[0140]图5为本发明实施例提供的一种利用log4j分文件的日志输出装置示意图。
[0141]参照图5,该装置包括编码获取单元1、哈希运算单元2、操作员数据项获取单元3、输出目的地实例获取单元4和调用单元5。
[0142]编码获取单元I,用于获取操作员编码和用户编码;
[0143]哈希运算单元2,用于将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值;
[0144]操作员数据项获取单元3,根据所述操作员哈希值得到操作员数据项;
[0145]输出目的地实例获取单元4,用于根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例;
[0146]调用单元5,用于调用所述用户元素中的输出目的地实例写日志。
[0147]在本实施例中,所述操作员数据项获取单元3包括:
[0148]操作员哈希值按照第一分割指数进行取余得到操作员余值;
[0149]从操作员数组中获取所述操作员余值对应的操作员链表;
[0150]判断所述操作员链表中是否存在数据;
[0151]如果所述操作员链表中不存在数据,则生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置;
[0152]如果所述操作员链表中存在数据,则从所述操作员链表中查找操作员编码对应的操作员元素;
[0153]判断所述操作员元素是否存在;
[0154]如果所述操作员元素存在,则所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表;
[0155]如果所述操作员元素不存在,则生成所述操作员数据项。
[0156]在本实施例中,所述操作员数据项获取单元3还包括:
[0157]生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中;
[0158]将当前时间、所述操作员编码放入所述新操作员元素中;
[0159]生成多个用户数组,将所述多个用户数组存入所述新操作员元素中;
[0160]根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。
[0161 ]在本实施例中,所述输出目的地实例获取单元4包括:
[0162]判断用户链表是否存在;
[0163]如果所述用户链表存在,则从所述用户链表中查找用户编码对应的用户元素;
[0164]如果所述用户链表不存在,则生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置;
[0165]判断用户元素是否存在;
[0166]如果所述用户元素存在,则获取所述用户元素中的输出目的地实例;
[0167]如果所述用户元素不存在,则根据生成的新用户元素获取所述用户元素中的输出目的地实例。
[0168]在本实施例中,所述输出目的地实例获取单元4还包括:
[0169]将所述新用户元素加入所述新用户链表中;
[0170]将所述用户编码加入所述新用户元素中;
[0171]根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。
[0172]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种利用log4 j分文件的日志输出方法,其特征在于,包括: 获取操作员编码和用户编码; 将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值; 根据所述操作员哈希值得到操作员数据项; 根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例; 调用所述用户元素中的输出目的地实例写日志。2.根据权利要求1所述的利用log4j分文件的日志输出方法,其特征在于,所述根据所述操作员哈希值得到操作员数据项包括: 操作员哈希值按照第一分割指数进行取余得到操作员余值; 从操作员数组中获取所述操作员余值对应的操作员链表; 判断所述操作员链表中是否存在数据; 如果所述操作员链表中不存在数据,则生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置; 如果所述操作员链表中存在数据,则从所述操作员链表中查找操作员编码对应的操作员元素; 判断所述操作员元素是否存在; 如果所述操作员元素存在,则所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表; 如果所述操作员元素不存在,则生成所述操作员数据项。3.根据权利要求2所述的利用log4j分文件的日志输出方法,其特征在于,所述生成操作员数据项包括: 生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中; 将当前时间、所述操作员编码放入所述新操作员元素中; 生成多个用户数组,将所述多个用户数组存入所述新操作员元素中; 根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。4.根据权利要求1所述的利用log4j分文件的日志输出方法,其特征在于,所述根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例包括: 判断用户链表是否存在; 如果所述用户链表存在,则从所述用户链表中查找用户编码对应的用户元素; 如果所述用户链表不存在,则生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置; 判断用户元素是否存在; 如果所述用户元素存在,则获取所述用户元素中的输出目的地实例; 如果所述用户元素不存在,则根据生成的新用户元素获取所述用户元素中的输出目的地实例。5.根据权利要求4所述的利用log4j分文件的日志输出方法,其特征在于,所述根据生成的新用户元素获取所述用户元素中的输出目的地实例包括: 将所述新用户元素加入所述新用户链表中; 将所述用户编码加入所述新用户元素中; 根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。6.—种利用log4j分文件的日志输出装置,其特征在于,包括: 编码获取单元,用于获取操作员编码和用户编码; 哈希运算单元,用于将所述操作员编码和所述用户编码分别进行哈希运算得到操作员哈希值和用户哈希值; 操作员数据项获取单元,根据所述操作员哈希值得到操作员数据项; 输出目的地实例获取单元,用于根据所述操作员数据项和所述用户哈希值得到用户元素中的输出目的地实例; 调用单元,用于调用所述用户元素中的输出目的地实例写日志。7.根据权利要求6所述的利用log4j分文件的日志输出装置,其特征在于,所述操作员数据项获取单元包括: 操作员哈希值按照第一分割指数进行取余得到操作员余值; 从操作员数组中获取所述操作员余值对应的操作员链表; 判断所述操作员链表中是否存在数据; 如果所述操作员链表中不存在数据,则生成新操作员链表,并将所述新操作员链表放入所述操作员余值对应的位置; 如果所述操作员链表中存在数据,则从所述操作员链表中查找操作员编码对应的操作员元素; 判断所述操作员元素是否存在; 如果所述操作员元素存在,则所述用户哈希值按照第二分割指数进行取余得到用户余值,并从用户数组中获取所述用户余值对应的用户链表; 如果所述操作员元素不存在,则生成所述操作员数据项。8.根据权利要求7所述的利用log4j分文件的日志输出装置,其特征在于,所述操作员数据项获取单元还包括: 生成新操作员元素,并将所述新操作员元素放入所述新操作员链表中; 将当前时间、所述操作员编码放入所述新操作员元素中; 生成多个用户数组,将所述多个用户数组存入所述新操作员元素中; 根据所述新操作员元素、所述新操作员链表、所述当前时间、所述操作员编码和所述多个用户数组得到所述操作员数据项。9.根据权利要求6所述的利用log4j分文件的日志输出装置,其特征在于,所述输出目的地实例获取单元包括: 判断用户链表是否存在; 如果所述用户链表存在,则从所述用户链表中查找用户编码对应的用户元素; 如果所述用户链表不存在,则生成新用户链表,并将所述新用户链表存入所述用户余值对应的位置; 判断用户元素是否存在; 如果所述用户元素存在,则获取所述用户元素中的输出目的地实例; 如果所述用户元素不存在,则根据生成的新用户元素获取所述用户元素中的输出目的地实例。10.根据权利要求9所述的利用log4j分文件的日志输出装置,其特征在于,所述输出目的地实例获取单元还包括: 将所述新用户元素加入所述新用户链表中; 将所述用户编码加入所述新用户元素中; 根据所述新用户元素、所述新用户链表和所述用户编码获取所述用户元素中的输出目的地实例。
【文档编号】G06F11/34GK105930256SQ201610230678
【公开日】2016年9月7日
【申请日】2016年4月14日
【发明人】李春林
【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1