解释Heroku日志的格式

时间:2014-08-06 15:04:50

标签: logging heroku

默认情况下,Heroku会为(Ruby)应用程序的每个请求生成两条日志消息。在每种情况下,都有一些字段的含义不明显。首先,路由器消息(因为它出现在logplex中):

<158>1 2014-08-04T18:28:43.078581+00:00 host heroku router - at=info method=GET path="/foo" host=app-name-7277.herokuapp.com request_id=e5bb3580-44b0-46d2-aad3-185263641044 fwd="50.168.96.221" dyno=web.1 connect=0ms service=2ms status=200 bytes=415

大部分内容相当明显,但我不知道开头的<158>1,时间戳后的host和“路由器”之后的-。< / p>

接下来,网络应用消息:

<190>1 2014-08-04T18:28:43.015630+00:00 host app web.1 - 50.168.96.221 - - [04/Aug/2014 18:28:43] "GET /foo HTTP/1.1" 200 12 0.0019

这与路由器消息有相同的谜团,再加上IP地址后的两个破折号。

有没有人知道Heroku日志格式的完整文档?我在网上找到的所有资料都很模糊。

1 个答案:

答案 0 :(得分:17)

Heroku日志有很长的历史,通过syslog进行中继,大致是RFC5424格式化。

第一个-之前的所有内容都是系统日志标题,其格式详见:http://tools.ietf.org/html/rfc5424#section-6.2

之后的所有内容都是来自应用的原始消息。

让我们打破第一条消息:

在第一个示例消息中,您发布了该行的其余部分是路由器发送的消息:

at=info method=GET path="/foo" host=app-name-7277.herokuapp.com request_id=e5bb3580-44b0-46d2-aad3-185263641044 fwd="50.168.96.221" dyno=web.1 connect=0ms service=2ms status=200 bytes=415

在您发布的第二个示例消息中,该行的其余部分是相关应用程序发出的行:

50.168.96.221 - - [04/Aug/2014 18:28:43] "GET /foo HTTP/1.1" 200 12 0.0019

我不知道该应用是什么,但产生的东西看起来像我一样的apache。 Heroku不生成这些,heroku为客户运行的应用程序。有些应用会为每个请求复制路由器日志相关信息,有些则不会。这取决于应用程序日志设置。

您可以在此处找到有关heroku生成的消息中数据格式的更多信息:https://devcenter.heroku.com

具体做法是: