【问题标题】:Explain format of Heroku logs解释 Heroku 日志的格式
【发布时间】:2014-08-12 00:46:39
【问题描述】:

默认情况下,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和“路由器”后面的-。

接下来,网络应用消息:

<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 日志格式的完整文档吗?我在网上找到的所有来源都非常模糊。

【问题讨论】:

    标签: logging heroku


    【解决方案1】:

    Heroku 日志通过 syslog 中继的历史由来已久,并且大致采用 RFC5424 格式。

    第一个-之前的都是syslog头,具体格式在这里:https://www.rfc-editor.org/rfc/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

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

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

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

    具体来说:

    【讨论】:

    • 写得非常好。我希望我能投票两次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多