我遵循了此处描述的指南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.log
和chown syslog:adm my-application-123.log
,然后它就工作了。