Se assumirmos que seu campo HOSTNAME está no formato alphabetic-restofname e a parte alfabética inicial é o nome da sua empresa, você pode separá-lo do campo usando o replacer de propriedade do regexp . Altere seu modelo para
$template serverlog, "/var/log/TEST/%hostname:R,ERE,1,FIELD:([^-]+)--end%/%HOSTNAME%/server.log"
O padrão regexp é ([^-]+)
, o que significa que um ou mais caracteres não incluem -
. O restante especifica que somente o primeiro grupo de captura ,1
da sintaxe de expressão regular estendida ,ERE
deve ser mantido. Se não houver correspondência, todo o FIELD
será mantido.
Você deve ter a versão 3.19.5 ou posterior do rsyslog, ou 4.1.5 ou posterior. Veja o link acima para alterar para maiúsculas, se desejado.
Alternativamente, você deve ser capaz de fazer o que quiser, se o seu rsyslog for da versão 7 ou posterior, usando o RainerScript da seguinte forma:
$template myplate,"/var/log/TEST/%$.customer%/%hostname%/server.log"
if ($hostname startswith "abcd") then set $.customer = "ABCD";
if ($hostname startswith "xyz") then set $.customer = "XYZ";
action(type="omfile" dynaFile="myplate")
stop
Isso cria um modelo usando uma variável local $.customer
. A variável é definida para cada mensagem quando o nome do host é correspondido por cada instrução if
. O action
grava a mensagem no arquivo calculado. Você pode adicionar outra declaração if
para cada cliente.