我有记录,我正试图在时间内找到模式或分析相似之处。
每个日志都可以细分为:
是否有任何算法方法可以在一组日志中找到相似之处?
我知道比较字符串的Levenshtein距离之类的东西,但是,我希望有一种更常用的方法可以用来运行日志文件?
可能没有一个适合所有人的解决方案(尽管如果有的话,请告诉我!) - 但是指向正确方向的指针,或者我可以寻找更多信息的地方都会很棒。
编辑 - 日志类型的一些示例
11:30:00.028747923 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(21643.5) complexprice(21641.9 - 21645.1) supercomplexprice(21641.9 - 21644.1)
11:30:00.028882087 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(21643.2) complexprice(21643.2 - 21643.2) supercomplexprice(21643.2 - 21643.2)
11:30:00.039708519 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(10465.8) complexprice(10465.8 - 10465.8) supercomplexprice(10465.8 - 10465.8)
11:30:00.039718896 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(10466.5) complexprice(10465.9 - 10467.1) supercomplexprice(10465.9 - 10466.7)
11:30:00.040049452 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(-0.184) complexprice(-0.184 - -0.184) supercomplexprice(-0.184 - -0.184)
11:30:00.704976265 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:388, 10456) legParams updated
11:30:00.704984746 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="386"} Identifier=10455) params(bidPrice=0 askPrice=0)
11:30:00.704992314 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:386, 10455) legParams updated
11:30:00.704995811 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="1171"} Identifier=16262) params(bidPrice=0 askPrice=0)
11:30:00.705002094 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:1171, 16262) legParams updated
11:30:00.705004666 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="883"} Identifier=10463) params(bidPrice=0 askPrice=0)
11:30:00.705010516 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:883, 10463) legParams updated
11:30:00.705012997 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="3968"} Identifier=10457) params(bidPrice=0 askPrice=0)
11:30:00.705018983 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:3968, 10457) legParams updated
我在想我可以创建一些不同正则表达式的dict来匹配不同类型的日志文件 - 然后找到每种类型的变量点 - 并使用某种启发式方法来匹配每个点的不同/相似程度?< / p>
或者是否有一种“更聪明”的方法可以解决这个问题?
答案 0 :(得分:0)
logline已经是非常结构化的东西,因此您可以为不同的部分定义不同的相似性标准,例如:时间戳字段相似性可以是两个时间戳的接近程度,或者,例如,当天的同一时间,对于模块/函数,可能只有完全相等才能起作用,并且有效负载的比较在很大程度上取决于您的域