0

我想拥有 /var/log/apache2/access.log 的实时副本,以便我可以 grep、进行主机名解析等。

最好的方法是什么?

我很好奇正在经过什么样的交通

4

2 回答 2

1

你可以:

  1. 配置 apache 以通过 syslog 发送日志,而不是配置 syslog 以获取单独的日志文件(具有特定所有者)。看看:O'Reilly:将 Apache httpd 日志发送到 Syslog
  2. 使用tail -f,但您必须确保以下命令没有缓冲才能立即读取事件

    tail -f /var/log/apache2/access.log | grep --line-buffered "something"或者

    tail -f /var/log/apache2/access.log | sed -une "/something/p"

  3. 使用tail -f | grepperl 或 python(perl 是在日志文件中进行 grepping 的不错选择)。

(此示例是从 man perlfaq5 复制的:

for (;;) {
    for ($curpos = tell(GWFILE); <GWFILE>; $curpos = tell(GWFILE)) {
               # search for some stuff and put it into files
    }
    # sleep for a while
         seek(GWFILE, $curpos, 0);  # seek to where we had been
}
于 2012-10-26T07:01:32.950 回答
0

做这个:

#Customize as appropriate:
tail -f  /var/log/apache2/access.log | cut -f 0 -d ' ' &
tail -f  /var/log/apache2/access.log | grep foo &
于 2012-10-26T03:34:52.377 回答