如何从每个Heroku应用程序的rsyslog中拆分日志文件?

时间:2013-07-26 15:08:08

标签: heroku rsyslog

我按照这里描述的指南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上的每个应用程序我配置为使用该排水已成功发送其日志。但似乎我无法找到如何按应用程序拆分文件。

提前致谢。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

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

所以,我使用了文章中提出的配置并运行touch my-application-123.logchown syslog:adm my-application-123.log然后就可以了。