我的Apache日志文件越来越大,我正在寻找方法,使他们更易于pipe理。
我知道我可以使用条件日志logging来只logging对特定types文件的访问,但是似乎更有意义的是logging随机样本的请求,这样我仍然可以知道发生了什么,而不必logging每一个单一的要求。
有没有类似的东西?
我在Ubuntu的8.04与Apache 2,并使用cronolog进行日志旋转。
我可以想到三个选项来减less日志文件的大小。
一个可能的方法是你提到的有条件的日志logging。 现在有条件的日志logging使用SetEnvIf Apachefunction。 SetEnvIf状态的实际语法规范:
SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
那么如何使用这个来创build一个只匹配Remote_Addr的“偶数”(或“奇数”)IP地址的expression式呢? 甚至可以通过进一步限制IP范围来进一步削减。
当然你也可以在这里看看你的问题的原因:什么使日志文件“太大”和“难以pipe理”? 他们为你提供什么信息?
为什么不更频繁地旋转日志? 如果每周轮换给你太多的日志,每天都转动它们。 如果每一天,每小时转动一次。 这个解决scheme的问题是在日志分析器,如webalizer:他们需要相应的configuration。
我更喜欢logging一切,因为当你遇到问题时,你永远不会有太多的信息。 而与实际的磁盘价格,我没有容量的问题。
您可以通过LogFormat指令来控制日志格式。
如果卷是问题考虑http://www.mrunix.net/webalizer/你可以运行一个cron作业,并产生良好的graphics。 我认为它甚至看起来已经被logrorate压缩的旧日志里面。
假设日志文件中有错误信息的随机分布,你可以在日志中每20行打印一次
perl -ne 'print unless (0 != $. % 20)' logfile.txt