Você pode ter qualquer número de modelos e testar as mensagens recebidas para seu nome de host ou endereço IP. Se seus nomes de host são bem estruturados, por exemplo, todos os "sistemas" começam com "sys", como sys10 e sysabc, então o número de testes pode ser reduzido.
Por exemplo,
$template mysystems,"/scratch/rsyslog/system/%HOSTNAME%/messages.log"
$template mynets,"/scratch/rsyslog/network/%HOSTNAME%/messages.log"
$template myfirewalls,"/scratch/rsyslog/firewall/%HOSTNAME%/messages.log"
if $fromhost startswith "sys" then -?mysystems
& stop
if $fromhost startswith "net" then -?mynets
& stop
if $fromhost startswith "fw" then -?myfirewalls
& stop
A linha & stop
impede que a mensagem que corresponde à linha anterior seja tratada mais.
Você pode testar o endereço IP com, por exemplo,
if $fromhost-ip startswith "192.168." then -?mynets
Se você quiser manter o filtro *.info,...
, você pode modificar o acima, por exemplo,
if $fromhost startswith "sys" then {
*.info,mail.none,authpriv.none,cron.none -?mysystems
& stop
}
Note, no entanto, que se você não deseja registrar alguns itens, você deve realmente fazer essa filtragem no remetente, não neste fim da rede. Está apenas desperdiçando a largura de banda da rede para enviar mensagens que você filtra e elimina.
Veja a extensa documentação do rsyslog , observando a versão que você tem.