【发布时间】:2014-08-26 11:14:09
【问题描述】:
我正在 Heroku 上运行 Flask 应用程序。我已将日志输出连接到 Loggly,但是尝试 Loggly 的验证步骤时,我收到以下消息:
我们收到了您的日志,但他们似乎没有使用我们的任何日志 自动解析格式。请参阅我们的指南以了解更多信息(链接)。 您仍然可以对这些日志进行全文搜索和计数,但您 将无法使用某些功能,例如按字段过滤。
为什么 Loggly 不能很好地解析 Heroku 的日志?我可以改变什么?
日志对于 Heroku 来说似乎是相当标准的,这里有一个例子:
2014-08-26 11:06:00 [2] [INFO] 1 workers
2014-08-26 11:05:45 [2] [INFO] 1 workers
2014-08-26 11:05:16 [2] [INFO] 1 workers
at=info method=GET path="/" host=my-app.herokuapp.com request_id=925f3605-2ac4-4182-b148-987ab7d985c4 fwd="91.271.61.73" dyno=web.1 connect=1ms service=4ms status=200 bytes=608
Process exited with status 0
2014-08-26 11:04:47 [2] [INFO] Shutting down: Master
2014-08-26 11:04:47 [2] [INFO] 1 workers
2014-08-26 11:04:47 [2] [INFO] Handling signal: term
2014-08-26 11:04:47 [7] [INFO] Worker exiting (pid: 7)
State changed from starting to up
2014-08-26 11:04:46 [2] [INFO] 1 workers
2014-08-26 11:04:46 [7] [INFO] Booting worker with pid: 7
2014-08-26 11:04:46 [2] [INFO] Listening at: http://0.0.0.0:26268 (2)
2014-08-26 11:04:46 [2] [INFO] Using worker: sync
2014-08-26 11:04:46 [2] [INFO] Starting gunicorn 19.1.0
Stopping all processes with SIGTERM
Starting process with command `gunicorn service:app --log-file=-`
2014-08-26 11:04:44 [2] [INFO] 1 workers
at=info method=GET path="/" host=my-app.herokuapp.com request_id=e152c661-b633-4870-aeba-68cea3cc8039 fwd="73.24.16.159" dyno=web.1 connect=0ms service=13ms status=200 bytes=407
Slug compilation finished
State changed from up to starting
Release v10 created by my@email.com
Deploy be32f3c by my@email.com
2014-08-26 11:04:29 [2] [INFO] 1 workers
Slug compilation started
2014-08-26 11:04:14 [2] [INFO] 1 workers
2014-08-26 11:03:59 [2] [INFO] 1 workers
【问题讨论】:
-
我不确定是什么导致了问题,但请求的日志条目缺少前导时间戳,这可能是 loggly 无法读取它们的原因。
-
@LukasEklund 这些是标准的 Heroku 日志,Loggly 原生支持 Heroku 作为输入源,所以我不认为缺少时间戳是问题所在。此外 Loggly 将自己的时间戳添加到日志中,它们不依赖于具有时间戳的日志 AFAIK
-
有趣的是,我以前从未见过没有时间戳的 heroku 日志。就此而言,我之前从未见过任何没有时间戳的服务器日志。
-
@LukasEklund 使用
heroku logs -t一些日志有 2 个时间戳,而有些日志只有一个时间戳 + 我从 loggly 复制了问题中的日志。所以也许记录删除了第一个时间戳并将其分开,因为他们确实有一个单独的列,其中包含我认为他们生成的时间戳,但也许他们只是提取了出现在所有 heroku 日志行上的时间戳。所以现在我想知道为什么有些heroku日志有两个时间戳......