Я пытаюсь динамически установить назначение сообщений syslog, и я не могу понять, как это сделать. Я хотел бы, чтобы сообщения регистрировались в определенных папках на основе содержимого сообщения.назначение syslog на основе содержимого сообщения
Например, моя вымышленная программа будет регистрировать сообщения об объектах в системе на основе их идентификатора. Таким образом, каждая операция CRUD на объекте регистрируется с его идентификатором. Я хотел бы иметь отдельный файл журнала для каждого объекта на основе его идентификатора.
Если был способ проанализировать идентификатор через регулярное выражение, сохраните идентификатор, а затем используйте его в пункте назначения, я смогу удовлетворить свои требования.
Что-то вроде этого (что, очевидно, псевдокод и не работает), где каждое сообщение журнала имеет идентификатор объекта в виде имени файла журнала, который находится в каждом сообщении журнала, хранящемся в скобках, и составляет 4 цифры:
# somehow parse out value that matches the regex \[\s\d][\s\d][\s\d][\s\d]\] and store it in $id
destination df_dest { file("/v/logs/${YEAR}${MONTH}${DAY}/$id.log"); };
filter f_program { program("program"); };
log { source(s_all); filter (f_program); destination (df_dest); flags(final); };
В этом случае будет 2 лог-файлы ...
1234.log
6789.log
... каждый с 2 сообщений в нем.
[1234] Updated.
[1234] Deleted.
[6789] Created.
[6789] Fetched.
Любая помощь очень ценится.
Благодаря @qux. Я закончил «пометку» $ {PROGRAM} при записи в syslog. Затем я использовал фильтр для маршрутизации сообщения в правый файл журнала. Оно работает. –