grepping数据Apache access.log

时间:2012-10-26 03:22:08

标签: linux apache bash

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

最好的方法是什么?

我很想知道什么样的流量通过

2 个答案:

答案 0 :(得分:1)

你可以:

  1. 配置apache通过syslog发送日志,而不是配置syslog以获取分离的日志文件(具有特定所有者)。请查看:O'Reilly : Sending Apache httpd Logs to 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. 使用perl或python创建tail -f | grep(perl是日志文件中grepping的一个不错的选择)。

  4. (此样本是从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
    }
    

答案 1 :(得分:0)

这样做:

#Customize as appropriate:
tail -f  /var/log/apache2/access.log | cut -f 0 -d ' ' &
tail -f  /var/log/apache2/access.log | grep foo &