我从日志中提取异常,这里是一个例子:
异常:System.InvalidOperationException:集合已修改;枚举操作可能无法执行。在 System.Collections.Generic.List`1.Enumerator.MoveNextRare() 在 test.Modules.UI.Table.<>c_DisplayClass2.b _0 () 在 System.Win
有时日志使用不同的语言,所以它看起来像这样:
例外:System.InvalidOperationException:La colección fue modificada,la opecion de enumeración no puede ejecutar。在 System.Collections.Generic.List`1.Enumerator.MoveNextRare() 在 Test.Modules.UI.Table.<>c_ DisplayClass2.b _0() 在 System.Win
正如您所看到的,只有异常部分不同,因为它使用不同的语言,但之后的部分将是相同的。我将所有这些异常都存储在数据库中,长度都修剪为 300 个字符,因为它们通常更长,但 300 个字符足以判断是否相同
所以我想可能会跳过异常并比较接下来的 300 个字符,但是要知道异常在哪里结束非常困难,没有任何具体的内容可以显示异常的开始和结束。
有什么想法我可以克服这个吗?也许我只是使用 Levenshtein 来突出显示紧密匹配的位置,然后我可以过滤它们,并可能设置一个界面,一旦我手动识别出用不同语言编写的相同异常,我就可以链接异常?
我的最终目标是查看数以千计的这些日志,看看有多少异常是相同的,大多数日志是英文的,但可能有 25% 不是英文的,所以通常我可以在例外,因为例外部分的语言不同,它可能只有 60-70% 的匹配。在极少数情况下,异常之后的部分与不同的异常非常接近,但这种情况很少见,因此不必太担心
我需要在 PHP 中执行此操作