如何格式化 HHVM 错误日志输出?

How do you format the HHVM error log output?

我正在使用 HHVM 和 Nginx。

我喜欢有某种错误日志格式。具体来说,错误日志中包含时间戳和错误级别以及时区偏移量,例如:

 [2014-02-23 01:20:33 -0500] WARNING: File not found

我已经设法将时间戳记入 HHVM 错误日志,内容如下:

 hhvm.log.level = Warning
 hhvm.log.always_log_unhandled_exceptions = true
 hhvm.log.runtime_error_reporting_level = 8191
 hhvm.log.use_log_file = true
 hhvm.log.file = /var/log/hhvm/error.log
 hhvm.log.header = true

但是,我找不到任何方法来格式化错误日志输出。目前,这是我在 HHVM 错误日志中得到的输出:

 [Wed Feb 25 18:08:20 2015] [hphp] [6516:7f30a15ff700:4:000001] [] \nWarning: File not found:

有谁知道如何修改 HHVM 的错误日志格式?

这目前在 hhvm's source 中进行了硬编码。

我强烈推荐submitting a feature request to the hhvm team,他们是一群非常乐于助人的人。

如果您对此不感兴趣,您可以很容易地编辑时间戳调用以包含偏移量,然后重新排列 snprintf() 行以符合您的喜好。您要查找的函数是以 std::string Logger::GetHeader() { 开头的行——当前是第 222 行。

除此之外,您可以使用 cron 或后台进程(即类似 tail -f /var/log/some/error.log |awk -F " " '{ print }' >> /var/log/other/error.log & 的东西)将日志解析为您喜欢的格式

我当然知道,这些选项虽然有用,但可能并不理想。