Назад | Перейти на главную страницу

Отформатируйте имя файла с помощью Rsyslog

Мне нужно отформатировать имя файлов, которые создает rsyslog:

Прямо сейчас в /etc/rsyslog.d/51-loggingdriver.conf у меня есть:

$template DockerLogs,"/var/log/docker/%HOSTNAME%_%FROMHOST-IP%_%PROGRAMMENAME%_syslog.log"

Но похоже, что имя программы дает мне что-то вроде:

gitlab_gitlab.1.2rr19xz43unto19ba1sih7jqg_syslog.log
gitlab_gitlab.1.aw2xvfp77i68i2c87szy5n8g9_syslog.log
gitlab_gitlab.1.ig5hk4j3i5x8i6hi07ebqotln_syslog.log

поэтому он дает мне несколько файлов для одного и того же приложения, но мне нужен только один файл. (случайный суффикс связан с использованием Docker Swarm Services)

Я бы хотел, чтобы это поле было равно: gitlab_gitlab, или даже лучше, просто gitlab

Возможно ли это? Как мне это сделать ? Есть ли способ сделать подстроку ???

Вы можете многое сделать с заменитель собственности, включая получение подстроки фиксированного размера или более точное соответствие регулярному выражению. Например,

%programmename:R,ERE,1,FIELD:([^_.]+).*--end%

вместо того %PROGRAMMENAME% в вашем шаблоне остановится после первого _ или . персонаж. В R означает использование регулярного выражения с расширенным синтаксисом ERE, сохраните первую группу захвата 1, и если совпадений нет, используйте исходное значение FIELD. В шаблоне регулярного выражения есть группа захвата () который соответствует любым символам, кроме двух упомянутых выше [^_.]+. В --end показывает конец R синтаксис.