【问题标题】:How do I split the log file from rsyslog per Heroku application?如何从每个 Heroku 应用程序的 rsyslog 中拆分日志文件?
【发布时间】:2013-07-26 22:26:37
【问题描述】:

我按照https://devcenter.heroku.com/articles/logging#creating-your-own-syslog-drain 此处描述的指南创建了我自己的 rsyslog 排水管。

我使用以下行配置了我的 rsyslog:

:inputname, isequal, "imtcp" /var/log/heroku.log

这仅在我将 rsyslog 从 5.x 更新到 7.x 后才有效。 A bug was preventing rsyslog to use the port 514。但更新后它运行良好。

但现在我想将日志拆分为每个应用程序一个文件。我发现另一个关于我应该使用的说法的问题:

if $hostname isqual "d.123..." then /var/log/my_application.log

其中“d.123...”是 Heroku 提供的实际流失 ID。但这没有用。我在docs on rsyslog site 之后尝试了几种变体。没有任何效果。

再次,使用一个文件有效。我配置为使用该排水管的 Heroku 上的每个应用程序都已成功将其日志发送给它。但似乎我不知道如何为每个应用程序拆分一个文件。

提前致谢。

【问题讨论】:

    标签: heroku rsyslog


    【解决方案1】:

    我在我的 rsyslog 中使用了这个:

    if $syslogtag startswith 'app[postgres]' then /myapp/postgres
    & ~
    if $syslogtag startswith 'app[pgbackups]' then /myapp/postgres
    & ~
    if $syslogtag startswith 'heroku[' then /myapp/heroku
    & ~
    if $syslogtag startswith 'app[' then /myapp/app
    & ~
    

    HTH。

    【讨论】:

    • 我会试一试,看看它是否有效。但我想要的有点不同。您按服务分类(postgre、pgbackup、dynos 等)我想按应用程序分类。有多个应用程序使用相同的排水管,我希望每个应用程序有一个日志文件。
    • 使用src主机名来区分。主机名将是 d.
    • 你可以在上面看到我试过了——尽管我可能做错了。在搜索 rsyslog+heroku 时,这是第一个答案所说的。到目前为止没有运气。 :(
    【解决方案2】:

    刚刚发现您必须手动创建日志文件。 rsyslog 无法创建它们,也不会在自己的日志中抱怨。

    所以,我使用了文章中提出的配置并运行了touch my-application-123.log 加上chown syslog:adm my-application-123.log 然后它工作了。

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多