对日志的相似性的算法分析?

时间:2013-04-11 04:36:33

标签: algorithm logging machine-learning analysis

我有记录,我正试图在时间内找到模式或分析相似之处。

每个日志都可以细分为:

  1. 时间戳
  2. 模块/功能
  3. 有效负载(即实际的日志消息)。
  4. 是否有任何算法方法可以在一组日志中找到相似之处?

    我知道比较字符串的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>

    或者是否有一种“更聪明”的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

logline已经是非常结构化的东西,因此您可以为不同的部分定义不同的相似性标准,例如:时间戳字段相似性可以是两个时间戳的接近程度,或者,例如,当天的同一时间,对于模块/函数,可能只有完全相等才能起作用,并且有效负载的比较在很大程度上取决于您的域