3

我想将我的 heroku 日志发送到远程 linux 机器,并将它们过滤到 /var/log/ 中自己的单独文件中

在heroku方面,我发出了这个命令:

heroku drains:add syslog://my_linux_ip:514

在我的 ubuntu 机器上,我编辑了/etc/rsyslog.conf并取消了这些行的注释:

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

现在我将在/var/log/messages中看到 heroku 日志输出

它被标记为主机名d.d423cb4b.......

如何获取要在/var/log/heroku中收集的所有 heroku 消息?

4

2 回答 2

4

只需将此行添加到您的rsyslog.conf

if $hostname startswith 'd.d423cb4b' then /var/log/heroku
& ~

显然,您需要将d.d423cb4b与您在自己的日志中观察到的实际主机名匹配。

& ~行指示 rsyslog 不要将此输出复制到任何其他日志中。因此,您应该在 /var/log/heroku 中看到您的输出,而其他任何地方都没有。

于 2012-08-01T13:35:22.497 回答
-1

您可以使用这些输入根据测功机过滤他们的日志

测功机 ID--d.2a2f9970-dc14-43d8-b893-26a70293c437

hostname, contains, "d.2a2f9970-dc14-43d8-b893-26a70293c437" /var/log/heroku/appname/appname_all.log
if ($hostname contains 'd.2a2f9970-dc14-43d8-b893-26a70293c437' and $syslogtag contains 'heroku[web.1]') then /var/log/heroku/appname/appname_Memory_cpu_dyno1.log
if ($hostname contains 'd.2a2f9970-dc14-43d8-b893-26a70293c437' and $syslogtag contains 'heroku[web.2]') then /var/log/heroku/appname/appname_Memory_cpu_dyno2.log
if ($hostname contains 'd.2a2f9970-dc14-43d8-b893-26a70293c437' and $syslogtag contains 'heroku[web.3]') then /var/log/heroku/appname/appname_Memory_cpu_dyno3.log
if ($hostname contains 'd.2a2f9970-dc14-43d8-b893-26a70293c437' and $syslogtag contains 'heroku[web.4]') then /var/log/heroku/appname/appname_Memory_cpu_dyno4.log
if ($hostname contains 'd.2a2f9970-dc14-43d8-b893-26a70293c437' and $syslogtag contains 'heroku[router]') then /var/log/heroku/appname/router_appname.log
于 2014-08-07T10:24:40.723 回答