【问题标题】:Php logging, error-log, and customizationPHP 日志记录、错误日志和自定义
【发布时间】:2012-01-08 03:16:31
【问题描述】:

我有一个大型企业级 php 应用程序,其中有很多对 error_log 的调用。

我认为,有时,当抛出异常时,错误日志会填满磁盘并导致服务器出现问题。

如何更好地利用 php 中的日志记录实用程序?特别是我对php的error_log功能在现实世界中是如何管理和使用的了解不多。

还有其他更合适的日志记录机制吗?像 info_log 或日志过期实用程序一样,一旦日志文件变得太大,它们就会删除/轮换日志文件?最后,我可以有多个日志文件吗?

【问题讨论】:

  • 最好的方法不是解决你的 php 中的问题吗?
  • 否 - 因为没有办法验证所有问题都已解决。低优先级、重复性错误日志不应干扰服务器保持活动的能力。
  • 听起来像是对数旋转器的工作。

标签: php logging large-files


【解决方案1】:

嗯,对于初学者来说,并不是所有的错误都应该被记录下来。如果可以在软件中处理错误(其中 90% 应该是,其他 50% [对不起俄罗斯人:P] 应该不存在)。应该只存在一小部分(与输入错误有关),并且无论如何都不应该记录这些部分。

使用异常而不是依赖错误,可以处理异常,如果不是,它们会停止脚本。扩展 Exception 类以允许更多类型的异常(InvalidArgumentExceptionMathExceptionLoggedErrorException),发挥创意,我已经制作了一个完整的 30 异常类型库。只要确保你do it right!

除此之外,error_log 会记录很多细节,使用异常,你可以记录任何你想要的。请参阅 Filesystem Functions

【讨论】:

  • 关于异常的部分很好。 .但是....我与一个社交网站有一个长期运行的 http 流连接 - 所以会出现中断...所以它并不像你暗示的那样黑白分明。
  • 这种情况下,既然中断是异常,你应该抛出异常然后处理(记录一下),可以区分通过将一个类扩展到HTTPStreamingException 并仅记录它(而其他异常得到不同的处理程序)。
【解决方案2】:

在我看来,error_log 已经足够好了,并为我们提供了足够的功能。是的,您可以拥有多个日志文件,您只需要管理它们。:) 例如,您可以使用如下内容:

ini_set('error_log','my_error_file.log');

关于自动删除的事情,如果你真的想做自动删除,我认为使用 error_log 没有任何好处。您应该将它们转储到某个地方,或者只是使用 php.ini 中的 error_reporting 关闭/最小化日志记录。

最后,您可以编写自己的日志记录类,这确实是一个非常简单和奇妙的解决方案,因为它将是非常短的 sn-p 代码,并且可以真正按照您的意愿工作。我通常也这样做。 谢谢:)

【讨论】:

  • 没什么,但是有一个可用的系统日志功能,虽然我从来没有发现它有用。它生成系统日志消息。
猜你喜欢
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2019-11-15
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
相关资源
最近更新 更多