【问题标题】:Parsing Apache Error.Log in Ubuntu 14.04在 Ubuntu 14.04 中解析 A​​pache Error.Log
【发布时间】:2016-07-23 12:30:46
【问题描述】:

我尝试使用以下命令解析 Apache 错误日志:

sudo tail -f /var/log/apache2/error.log |  awk  '$8 ~ /(400|500)/ {print $6}'

我试图只查看 400 错误或 500 错误。但是当我运行该 ssh 命令时,它不会返回任何内容。换句话说,屏幕上什么也没有显示。

为了记录,我试图据称将我的浏览器指向一个虚假的 URL 页面,以便它生成 400 错误/500 错误。

我错过了什么吗?

【问题讨论】:

  • 请粘贴错误日志的sn-p
  • @Varun 很抱歉,这是不可能的,因为这是在生产服务器上运行的。 error.log 的内容将包含“通知”和“警告”级别,而且它建立得太快,我什至无法捕获最后 100 行。
  • 命令语法对我来说看起来不错,但字段 $8 可能没有错误代码 400 或 500。只是一个疯狂的猜测将 $8 替换为 $0 并尝试 awk '$0 ~ /(400| 500)/{打印 $6}'。除非有输入数据,否则很难找出问题。
  • wrt i am sorry it is not possible since this is run on a production server. - 没有人希望您发布真实数据,但我们确实希望您创建与真实数据格式相同的人工数据。修改六行真实数据以创建您可以向我们展示以帮助我们帮助您的东西并不费力。您还说when i run that ssh command,但您没有显示 ssh 命令 - 编辑您的问题以显示您实际运行的命令行。

标签: apache awk ssh error-log


【解决方案1】:

您正在阅读的日志文件有误,或者您的 awk 脚本有误。试试这个

sudo tail -f /var/log/apache2/error.log |  grep GET

这将告诉您是否真的看到了GET 请求。那就试试吧

cat /usr/local/var/log/apache2/access_log | awk '{print $7}'

在普通的 apache 框中,这将打印请求 URL。如果这是打印任何你知道你有一个工作日志的东西。然后用这个

cat ..../access_log | awk '{print $9}'| egrep "(400|500)"

查看有错误的请求。笔记。我通常只使用 awk 来分割分隔符,因为随着事情变得更加复杂,我使用的管道比 Perl 更多。

【讨论】:

  • 谢谢@Harry,我尝试了尾巴(第一个建议)但仍然有类似的结果。我仔细检查了我指向的文件是否正确。
  • 您在跟踪文件时是否看到了什么?如果不是,那么您要么没有记录,要么查看了错误的文件。
猜你喜欢
  • 2013-05-04
  • 2011-07-30
  • 2011-11-28
  • 1970-01-01
  • 2010-09-14
  • 2018-05-30
  • 2014-11-01
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多