Na verdade, consegui descobrir a solução depois de encontrar uma opção de depuração para executar o rsyslog. Aparentemente, você pode chamar o rsyslogd diretamente do console da seguinte forma:
rsyslogd -d
Isso mostrará uma transmissão ao vivo de todas as análises de regras. Depois de uma tentativa de tentativa e erro usando esse truque, consegui determinar que minhas regras de filtro estavam falhando porque várias partes eram necessárias, não apenas escapadas, mas duplo com escape. Isso realmente me surpreendeu.
Aqui está a minha regra final:
:fromhost-ip, regex, "10\.[0-9]\+\.1\.2" -/var/log/test.log
& ~
E aqui está a saída para alguns exemplos de sucesso. Observe que o +
tem que aparecer aqui como escape, o que é estranho, porque não são encontradas correspondências se você conectá-lo ao testador de regex do rsyslog oficial desta maneira:
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10\.[0-9]\+\.1\.2': TRUE
Filter: check for property 'fromhost-ip' (value '10.24.1.2') regex '10\.[0-9]\+\.1\.2': TRUE
No caso de alguém ler isso algum dia, é curioso, aqui estão alguns dos meus exemplos de tentativa e erro, a maioria dos quais simplesmente falhou completamente:
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10.[0-9]+.1.2': FALSE
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '^10.[0-9]+.1.2$': FALSE
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10\.[0-9]+\.1\.2': FALSE
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10\.1\.1\.2': TRUE
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10\.[0-9]\.1\.2': TRUE
Filter: check for property 'fromhost-ip' (value '10.1.1.2') regex '10\.[0-9]+\.1\.2': FALSE