2016-03-16 36 views
0


我有web服务器多种Web应用程序运行(PHP)到文件。配置的设置方式是,在午夜删除php error_log(所以文件只能持续24小时)。猛砸grep的PHP是error_log致命错误通过过滤

的事情是,我想所有的致命错误登录到另一个文件或数据库中,但只对特定的Web应用程序。 (大约有20次跑步,其中4次是我的)。

我在考虑创建一个bash脚本,在我的应用程序的“致命”和url上擦写error_log文件,将输出提取到文件中,并记住当前error_log在单独缓存文件中的最后一行号。

我会然后把脚本cron和执行它每隔几分钟(起始于先前运行的最后一行)。

整个想法是有点搞砸了,我认为这可以有效地写,任何想法?

+0

'<?PHP的ini_set( “error_log中”, “/路径/到/你/日志/文件”);?>' – miken32

+0

,将需要在每一个应用程序,这是一个不好的做法,被插入。 – falnyr

+0

这是一个比这个基于cron的文本处理更加干净的地狱,你正试图完成。我以为你只是想为几个应用程序。如果你不想在你的PHP代码中,把它放在'.htaccess'文件中。 'php_value error_log“/ path/to/your/log/file”这个设置是有原因的,不要因为不使用而使你的生活变得复杂! – miken32

回答

1

如果你不能配置这个开箱即用,写一个cron作业似乎可以。我不太了解PHP。在java中,例如您可以根据条件将相同的日志消息转到多个日志文件。

但我有你的cron作业做致命错误的同时收集和“最后一天的”日志文件的删除。通过这种方式,您可以在午夜单独运行此脚本,并且可以节省上一次结束时间(以及错过午夜前发生的错误的机会)的复杂性。如果集合正常,请删除旧文件,否则将其留作诊断并重试。它可以节省您对脚本的一堆(24 * 60)调用。

+0

删除文件的cronjob由系统管理员设置(不幸的是我无法使用)。 – falnyr

+0

然后恕我直言,最简单的方法是让你的cronjob在删除作业之前运行一分钟,并立即处理整个文件,而不是每隔几分钟查看一次“重新启动点”。再一次,你将失去致命错误的最后一刻,但如果你不能干涉删除工作,那么没有办法。 – geert3

+0

问题是我需要几乎实时地查看错误。这就是为什么我决定每隔几分钟就会触发一次cronjob。 – falnyr