如何根据Heroku应用程序从rsyslog中分割日志文件



我遵循了此处描述的指南https://devcenter.heroku.com/articles/logging#creating-您自己的syslog drain来创建我自己的rsyslog drain。

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

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

这是在我将rsyslog从5.x更新到7.x之后才起作用的。一个错误阻止rsyslog使用端口514。但在更新后,它运行良好。

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

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

其中"d.123…"是Heroku提供的实际排水管ID。但这并没有奏效。我在rsyslog网站上根据文档尝试了几种变体。没有任何效果。

同样,使用一个文件就可以了。Heroku上我配置为使用该drain的每个应用程序都成功地将日志发送到了它。但我似乎找不到如何为每个应用程序拆分一个文件。

提前谢谢。

我在rsyslog drain中使用了这个:

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。

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

因此,我使用了文章中提出的配置,并运行了touch my-application-123.logchown syslog:adm my-application-123.log,然后它就工作了。

最新更新