我使用grep来解析我的交易应用程序日志,但它的局限性在于我需要通过视觉检索输出来查看发生了什么等信息。
我想知道Perl是否是更好的选择?有没有好的资源可以学习Perl中的日志和字符串解析?
我也相信Python在这方面会是不错的选择。Perl vs Python vs“在Linux上使用grep”?
我使用grep来解析我的交易应用程序日志,但它的局限性在于我需要通过视觉检索输出来查看发生了什么等信息。
我想知道Perl是否是更好的选择?有没有好的资源可以学习Perl中的日志和字符串解析?
我也相信Python在这方面会是不错的选择。Perl vs Python vs“在Linux上使用grep”?
最终,这取决于你想要识别多少语义,你的日志是否符合常见模式,以及你想要对解析出的数据做什么。
如果你可以使用正则表达式找到所需内容,那么你有很多选择。Perl是一种流行的语言,具有非常方便的本地RE功能。我个人更喜欢Python,并发现针对RE进行简单操作的额外麻烦并不显著。
如果你想要做比RE匹配更智能的事情,或者想要有很多逻辑,你可能更喜欢Python甚至是Java / C++ /等等。例如,在Python中逐行读取然后应用各种谓词函数和反应匹配非常容易,这对于你想要应用规则集时非常好。
use strict
指令可以在编译时捕获许多其他动态语言忽略的错误。当我使用Python或PHP时,我非常想念它。当涉及到需要使用Python解析的任何工作时,我发现这个list非常有价值。
对于解析大型/复杂日志,我不会使用perl - 只是为了可读性(perl的速度对于我来说缺乏(处理大型任务)- 但这可能是我的perl代码(我必须改进))。
然而,如果grep目前完全符合您的需求 - 真的没有理由陷入编写一个完整的解析器中。最简单的解决方案通常是最好的,而grep是一个很好的工具。
在Linux上,如果日志文件不太大,您可以使用shell(bash、ksh等)来解析它们。通常要使用的其他工具是grep和awk。但是,为了获得更多的编程能力,通常会使用awk。如果您有大文件需要解析,请尝试使用awk。
当然,也可以使用Perl、Python或几乎任何其他具有文件读取和字符串操作功能的语言。
尝试 Nagios日志监控
这个工具之所以是您的最佳选择,原因如下:
它不需要安装外部软件包。这意味着,无需安装任何perl依赖项或可能让您感到紧张的傻瓜式软件包。
几乎没有学习曲线。您不需要学习任何编程语言来使用它。您只需要知道您想要对所考虑的日志执行什么操作,并阅读随工具附带的pdf文件。
如果您要解析的日志是syslog格式,则可以使用以下命令:
./NagiosLogMonitor 10.20.40.50:5444 logrobot autofig /opt/jboss/server.log 60m 'INFO' '.' 1 2 -show
即使您的日志不是已识别的格式,也可以使用以下命令有效地进行监控:
./NagiosLogMonitor 10.20.40.50:5444 logrobot autonda /opt/jboss/server.log 60m 'INFO' '.' 1 2 jbosslogs -ndshow
要解析特定字符串的日志,请将“INFO”字符串替换为您想在日志中监视的模式。如果您想搜索多个模式,请像这样指定它们:“INFO|ERROR|fatal”。
如果效率、简洁(和安全安装)对您很重要,那么这个Nagios工具就是您的选择。