Registre o nome do aplicativo em suas mensagens. Filtrar no nome do aplicativo, em vez de no recurso. Se seus aplicativos não estiverem gerando mensagens do syslog diretamente, você poderá aplicar um filtro de saída (por exemplo, sed
) para massagear as coisas para que elas fiquem do jeito que você deseja.
Dê uma olhada na documentação do Rsyslog sobre condições de filtro para ver como você pode configurar esse comportamento. Com base nas informações dessa página, aqui está um exemplo de como você pode colocar mensagens começando com a string "application1" em /var/log/application1
:
if $msg startswith 'application1' then /var/log/application1
Você também pode filtrar explicitamente no nome do programa , se o aplicativo definir isso corretamente:
if $programname == 'application1' then /var/log/application1
Você pode realizar todos os tipos de filtragem complexa no seu rsyslog.conf
; leia a documentação para mais informações e exemplos.
EDIT: rsyslog
pode usar modelos para criar arquivos separados para cada servidor. Algo como o seguinte deve colocar todas as mensagens de log em arquivos separados para cada nome de host. (Isso é retirado da manpage).
$template DynFile,"/var/log/system-%HOSTNAME%.log
*.* ?DynFile
O seguinte é semelhante, mas não registra mensagens de depuração. Ele também usa o nome do host da conexão em vez do nome do host da mensagem. (Isso é baseado no que desenvolvi para registrar a saída de um Obi100).
$template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template HostFile,"/var/log/system-%fromhost%.log
if $syslogseverity < 7 then -HostFile;HostFormat
Leia a página de manual e a documentação, se você tiver necessidades mais complexas, ou quiser entender o que foi feito acima.