默认情况下,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
之后的一切都是来自应用程序的原始消息.
那么让我们打破第一个消息:
<158>:这是PRI,见http://tools.ietf.org/html/rfc5424#section-6.2.11:这是"版本",见http://tools.ietf.org/html/rfc5424#section-6.2.22014-08-04T18:28:43.078581+00:00:日期标记,包括TZ,见http://tools.ietf.org/html/rfc5424#section-6.2.3host:是原始系统的"主机名",请参阅http://tools.ietf.org/html/rfc5424#section-6.2.4.这实际上被剥离了,取而代之的是"主机"heroku:"app name",请参阅http://tools.ietf.org/html/rfc5424#section-6.2.5.ATM:这将是"heroku"或"app",具体取决于生成消息的内容.如果日志消息是由heroku基础设施生成的,那么这将是"heroku".如果日志消息是由用户的应用程序(或附加组件)生成的,那么这将是"app".router:PROCID,见http://tools.ietf.org/html/rfc5424#section-6.2.6.这将是生成消息的组件/ dyno的名称.-:MSGID字段,请参阅http://tools.ietf.org/html/rfc5424#section-6.2.7.我们不使用它,所以它是一个-代替.在第一个示例消息中,您发布了该行的其余部分是路由器发送的消息:
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
特别:
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |