我如何从日志文件中删除IP地址

我有一个Apache / Nginx无论Web服务器日志客户端IP地址的访问日志。 现在这些日志文件通过logrotate旋转。

我想保留IP地址几天,然后 – 7天后,我想从日志文件中删除ips的隐私原因(主要由德国法律规定)

使用mod_removeip或类似的东西是行不通的,因为我需要根据他们的IP地址过滤一些请求。

有没有什么“标准”的方式如何做到这一点 – 也许甚至与logrotate?

编辑

我刚刚发现这个脚本http://www.zendas.de/technik/sicherheit/apache/index.html,但它取决于通过脚本实时pipe道所有日志logging的能力。 我不确定这种方法的性能意义。

另外,这只适用于“前端”服务器日志,而不适用于应用程序服务器日志

PCRE! (Perl兼容的正则expression式)

s/\b(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\b/REMOVED IP/g 

在perl脚本或任何其他合适的语言(使用PCRE或其他一些足够正确的正则expression式语言)中用作filter来重写7天的日志文件。

 $ cat > file_with_ip some text from 192.168.1.1 ^D $ perl -p -i -e 's/\b(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\b/REMOVED IP/g' file_with_ip $ cat file_with_ip some text from REMOVED IP 

我不认为logrotate会这样做; 你可能需要考虑创build一个脚本来解压缩这些文件,通过awk或sed处理它们来剥离IP,然后重新压缩它们。 只是不能在“主动”日志文件上做到这一点。