Estou escrevendo um aplicativo que inclui uma configuração rsyslog que é colocada em /etc/rsyslog.d/
.
Certas mensagens de log devem ser redirecionadas para um pipe nomeado, assim:
template (name="my_fmt" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag% %msg%\n")
if ( ... ) then {
action(type="ompipe" Pipe="/tmp/SITENAME/pipe" Template="my_fmt")
stop
}
Isso funciona como pretendido. Infelizmente, o SITENAME no nome do pipe acima não é conhecido antecipadamente e deve ser configurado pelo cliente.
Eu poderia escrever instruções como "encontrar qualquer ocorrência da palavra SITENAME no arquivo e substituí-la por seu $ sitename específico" ou até mesmo fornecer um sed
comando, mas não gosto dessa abordagem. Em vez disso, gostaria de definir uma constante no início do arquivo e usá-la sempre que necessário. Igual a:
set ACTUAL_SITE = "foo";
template (name="my_fmt" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag% %msg%\n")
if ( ... ) then {
action(type="ompipe" Pipe="/tmp/$ACTUAL_SITE/pipe" Template="my_fmt")
stop
}
Como posso fazer isso? Eu (acho que) tentei todas as variantes de $
, %…%
e %$…%
na Pipe="…"
parte, mas nenhuma funcionou. O valor de ACTUAL_SITE
nunca muda após a instalação inicial. Eu só quero simplificar a configuração para o cliente e dizer "defina o valor de ACTUAL_SITE para o nome do seu site real" e não fazê-lo mexer no resto do arquivo.