From b6fdc82160a16ec49f6425e9449373a237c7df78 Mon Sep 17 00:00:00 2001 From: Wapiti08 Date: Wed, 6 Nov 2019 16:20:45 +0000 Subject: [PATCH 1/4] Update SHISO.py Modified Queue library to make it compatible to python3 --- logparser/SHISO/SHISO.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logparser/SHISO/SHISO.py b/logparser/SHISO/SHISO.py index 813bf9ee..1f00bec3 100644 --- a/logparser/SHISO/SHISO.py +++ b/logparser/SHISO/SHISO.py @@ -7,8 +7,9 @@ import re import os import time +import multiprocessing as mp from nltk import ngrams -from Queue import * +# from Queue import * import numpy as np import pandas as pd import hashlib @@ -293,7 +294,7 @@ def Adjust(self, pn, nidx, n): def outputResult(self, node): templateNo = 1 - nodeQ = Queue() + nodeQ = mp.Queue() nodeQ.put(node) templates = [0] * self.df_log.shape[0] From febd117646e8a3e6297dc21202bfc8cb3785b93d Mon Sep 17 00:00:00 2001 From: Wapiti08 Date: Mon, 11 Nov 2019 17:08:24 +0000 Subject: [PATCH 2/4] Replace self.keep_para For apply function: If the replaced value does not exist, there would be the error like: Cannot set a frame with no defined index and a value that cannot be converted to a Series So it can be replaced with if log_templates to check whether it is none --- logparser/Drain/Drain.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logparser/Drain/Drain.py b/logparser/Drain/Drain.py index 258a3b22..25f418ac 100644 --- a/logparser/Drain/Drain.py +++ b/logparser/Drain/Drain.py @@ -212,7 +212,8 @@ def outputResult(self, logClustL): self.df_log['EventId'] = log_templateids self.df_log['EventTemplate'] = log_templates - if self.keep_para: +# if self.keep_para: + if log_templates: self.df_log["ParameterList"] = self.df_log.apply(self.get_parameter_list, axis=1) self.df_log.to_csv(os.path.join(self.savePath, self.logName + '_structured.csv'), index=False) @@ -341,4 +342,4 @@ def get_parameter_list(self, row): parameter_list = re.findall(template_regex, row["Content"]) parameter_list = parameter_list[0] if parameter_list else () parameter_list = list(parameter_list) if isinstance(parameter_list, tuple) else [parameter_list] - return parameter_list \ No newline at end of file + return parameter_list From c6f11e5522b0d1a18273993694b325f52787cbda Mon Sep 17 00:00:00 2001 From: Wapiti08 Date: Mon, 11 May 2020 06:40:05 +0100 Subject: [PATCH 3/4] Update Drain.py encode the string parameter in ParameterList --- logparser/Drain/Drain.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/logparser/Drain/Drain.py b/logparser/Drain/Drain.py index 25f418ac..1337efd3 100644 --- a/logparser/Drain/Drain.py +++ b/logparser/Drain/Drain.py @@ -10,7 +10,8 @@ import pandas as pd import hashlib from datetime import datetime - +import math +from collections import Counter class Logcluster: def __init__(self, logTemplate='', logIDL=None): @@ -333,6 +334,15 @@ def generate_logformat_regex(self, logformat): regex = re.compile('^' + regex + '$') return headers, regex + def entropy(self, string): + ''' Used to encrypt the string parameter in ParameterList. + + :param string: the string parameter + :return: the encrypted number + ''' + letter_num, length_string = Counter(string), float(len(string)) + return np.round(-sum(count/length_string * math.log(count/length_string, 10) for count in letter_num.values()),5) + def get_parameter_list(self, row): template_regex = re.sub(r"<.{1,5}>", "<*>", row["EventTemplate"]) if "<*>" not in template_regex: return [] @@ -342,4 +352,5 @@ def get_parameter_list(self, row): parameter_list = re.findall(template_regex, row["Content"]) parameter_list = parameter_list[0] if parameter_list else () parameter_list = list(parameter_list) if isinstance(parameter_list, tuple) else [parameter_list] + parameter_list = [self.entropy(string) for string in parameter_list] return parameter_list From c342c7e688b51f9c214a64e22316f63f5575583c Mon Sep 17 00:00:00 2001 From: Wapiti08 Date: Wed, 13 May 2020 05:54:26 +0100 Subject: [PATCH 4/4] Update Drain.py --- logparser/Drain/Drain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logparser/Drain/Drain.py b/logparser/Drain/Drain.py index 1337efd3..ab03ed23 100644 --- a/logparser/Drain/Drain.py +++ b/logparser/Drain/Drain.py @@ -4,7 +4,7 @@ License : MIT """ -import re +import regex as re import os import numpy as np import pandas as pd