解释Heroku日志的格式

Ste*_*eve 9 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的时间,时间戳之后的字,以及-后面的"路由器".

接下来,Web应用程序消息:

<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日志格式的完整文档?我在网上找到的所有资料都很模糊.

fre*_*rmz 20

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

第一个之前的所有内容都是-syslog标题,其格式详见: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

特别:

  • 写得非常好。我希望我能投票两次。 (2认同)