A solução é usar modelos rsyslog personalizados. Primeiro você cria o modelo de mensagem de log.
O modelo a seguir se assemelha ao formato syslog padrão, mas tem o %fromhost-ip%
adicionado, você pode adicionar outras variáveis da mesma maneira
$template tplremote,"%timegenerated% %HOSTNAME% %fromhost-ip% %syslogtag%%msg:::drop-last-lf%\n"
Em seguida, criamos o modelo de nome de arquivo:
$template RemoteHost,"/var/log/remote/%HOSTNAME%.log"
E, finalmente, informamos ao rsyslog para usar modelos criados:
if ($hostname != 'localhost') then ?RemoteHost;tplremote
& ~
Note que as últimas linhas devem ser adicionadas antes da linha que contém.
*.info;mail.none;authpriv.none;cron.none
Observe também que isso foi testado e funcionou no novo rsyslog de epel repo no redhat ( rsyslog-7.6.7-1.el6.x86_64
). O comportamento pode ser diferente em outras distros.