我使用grep来解析我的交易应用程序日志,但它在某种意义上是有限的,我需要在视觉上拖拽输出以查看发生了什么等。
我想知道Perl是否是更好的选择?有没有用Perl学习日志和字符串解析的好资源?
我也相信Python会对此有所帮助。 Perl vs Python vs'grep on linux'?
答案 0 :(得分:11)
最后,它实际上取决于您想要识别多少语义,您的日志是否适合常见模式,以及您希望如何处理已分析的数据。
如果您可以使用正则表达式来查找所需内容,那么您有很多选择。 Perl是一种流行语言,具有非常方便的原生RE设施。我个人觉得使用Python更加舒服,并且发现RE的麻烦并不重要。
如果你想做一些比RE匹配更聪明的事情,或者想要有很多逻辑,你可能会更熟悉Python甚至是Java / C ++ /等。例如,它很容易在Python中逐行读取,然后对匹配应用各种谓词函数和反应,如果你有一个你想要应用的规则集,这很好。
答案 1 :(得分:4)
所有脚本语言都是不错的选择:Perl,Python,Ruby,PHP和AWK都可以。使用这些语言中的任何一种语言都比从(小)大小开始查看日志更好。
Wearing Ruby Slippers to Work是在Ruby中执行此操作的示例,以“为什么无法模仿的风格”编写。这是一个basic example in Perl。我建议你选择其中一种语言并开始破解。
答案 2 :(得分:2)
Perl对Python的一大优势是,解析文本时能够直接使用regular expressions作为语言语法的一部分。例如:
if ($line =~ m/^Regex/) {
... code goes here
}
Perl还将capture groups直接分配给$ 1,$ 2等,这使得它非常简单。根据您尝试解析的日志文件的格式和结构,这可能证明非常有用(或者,如果它可以解析为固定宽度文件或使用更简单的技术,根本不是很有用)。
这些只是语法糖,真的,其他语言也允许你使用正则表达式和捕获组(实际上,链接的文章显示了如何在Python中执行它)。你只需要编写更多代码并传递对象即可。
答案 3 :(得分:2)
有一个叫做Log_Analysis的Perl程序可以为你做很多分析和预处理。
答案 4 :(得分:2)
学习编程语言可以让你将日志分析能力带到另一个层次。
任何动态或“脚本”语言(如Perl,Ruby或Python)都可以完成这项工作。您应该使用什么取决于外部因素。在你应该考虑的事项中:
就个人而言,对于上述任务,我会使用Perl。 YMMV。
喜欢Perl的几个理由:
强大的单行 - 如果你需要做一个真正快速,一次性的工作,Perl提供了一些非常好的捷径。有关示例,请参阅perlrun -n
多范式语言 - Perl支持命令式,功能性和面向对象的编程方法。
Sigils - 那些在$foo
或@bar
等变量上带有标点字符的字符。它们有点像匈牙利符号,没有那么烦人。
Moose - 一个令人难以置信的新OOP系统,为代码组合和重用提供了强大的新OO技术。
Strictures - use strict
pragma捕获了许多其他动态语言在编译时掩盖的错误。当我使用Python或PHP时,我非常想念它。
自我约束 - Perl让您可以随时自由地写作和做自己想做的事情。这意味着你必须学会编写干净的代码,否则你会受到伤害。幸运的是,有一些工具可以帮助初学者。 Perl::Critic对最佳实践的代码进行了类似lint的分析。
答案 5 :(得分:1)
在处理任何需要用python解析的作业时,我发现这个list非常有价值。
我不会使用perl来解析大型/复杂的日志 - 只是为了可读性(perl的速度对我来说缺乏(大型工作) - 但这可能是我的perl代码(我必须改进))。
然而,如果grep现在完全适合你的需求 - 真的没有理由陷入写一个完整的解析器。最简单的解决方案通常是最好的,而grep是一个很好的工具。
答案 6 :(得分:1)
答案 7 :(得分:1)
当然,也可以使用Perl或Python或几乎任何其他具有文件读取和字符串操作功能的语言。
答案 8 :(得分:-2)
此工具最适合您的目的是:
不需要安装外包。这意味着,没有必要安装任何perl依赖项或任何可能让你紧张的愚蠢软件包。
几乎没有学习曲线。您不需要学习任何编程语言来使用它。您需要做的就是确切地知道您想要对所记录的日志做什么,并阅读该工具附带的PDF文件。
如果要解析的日志是syslog格式,可以使用如下命令:
./ NagiosLogMonitor 10.20.40.50:5444 logrobot autofig /opt/jboss/server.log 60m ' INFO' '。& #39; 1 2 - 显示
即使您的日志不是可识别的格式,仍然可以使用以下命令有效地监视它:
./ NagiosLogMonitor 10.20.40.50:5444 logrobot autonda /opt/jboss/server.log 60m ' INFO' '。& #39; 1 2 jbosslogs -ndshow
要解析特定字符串的日志,请替换' INFO'包含要在日志中查看的模式的字符串。如果您想搜索多个模式,请像这样指定它们' INFO | ERROR |致命'。
如果效率和简单(以及安全安装)对您很重要,那么这个Nagios工具就是您的选择。