繁体   English   中英

用java解析apache tomcat accesslog

[英]Parsing apache tomcat accesslog with java

使用 java 解析 apache accesslog 文件的最佳方法是什么?

是使用 stringtokenizer 还是有专门用于解析 apache 日志文件的第 3 部分库?

恕我直言,StringTokenizer 对任何事情都太愚蠢了,而第三方库对于像这样简单的事情来说可能是一种矫枉过正。 我会写一个简单的正则表达式,只要它不是关键的并且在我的控制下运行。 http://www.google.com/search?q=Parsing+apache+tomcat+access+log有 280k 匹配项,前两个似乎是免费库。

在这个github 项目中,您会发现一个名为LogParser的类,它涵盖了一些访问日志格式。 此外,使用 Hadoop 完成所有过程,这意味着您将能够使用商用硬件并行分析大量访问日志。

看看 [Web 日志分析器] http://code.google.com/p/web-log-analyzer/

看看 JMeter 的TCLogParser [ javadocs | 来源]。 它实际上是在 JMeter 中使用的,但您可以查看源代码并根据自己的需要进行更改。

没有专门用于解析 tomcat 日志文件的第三部分库。 您仍然可以自己做很多事情:

  1. 定义日志文件的特征和必要的阀门格式
  2. 定义您需要处理的操作(访问日志、struts 操作等)
  3. 读入日志文件的行并将它们拆分(即oneLine.split(" ", 0);
  4. 如果需要,将所需的组件存储在数据库中。 数据库会给你很大的自由。

你准备好了!

可旋转的日志文件更易于使用。 你会有很多,但更小。 过滤掉任何不必要的行。

解析取决于您在 server.xml 中使用的模式。

一个复杂的解决方案会从 server.xml 文件中读取阀门模式并知道如何解析它。

请评估这个已经被广泛使用的 Java 库(例如它包含在 Apache Drill 中),用于解析 Apache HTTPD 访问日志文件并且还支持 Nginx 访问日志文件。

使用它的两个主要原因(除了我写的):

  • 除了默认的 LogFormat 规范外,还支持几乎所有的自定义格式。
  • 支持获取更深的领域,而不仅仅是顶级。 因此,如果您需要特定的 cookie 值或特定的查询字符串参数,您可以获得它并处理所有编码。

https://github.com/nielsbasjes/logparser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM