У меня есть события регистрации приложений в формате JSON для более поздних структурированных запросов и т. Д. Теперь у меня есть задача регистрировать одни и те же сообщения в виде простого текста (вероятно, CSV), и я действительно не хочу регистрировать каждое событие дважды в обоих форматах.
Можно ли конвертировать в rsyslog? У меня есть возможность отследить выходной файл и передать его в конвертер, а затем записать с другим тегом, но это кажется неоптимальным.
Есть другие идеи?
Спасибо !
Возможно, вы захотите взглянуть на mmjsonparse
. Похоже, он делает то, что вы хотите. Тебе понадобиться rsyslog
6.6 или выше (рекомендуется 7 или выше). Найден образец конфигурации Вот объясняет это довольно хорошо:
# load needed modules
module(load="imuxsock") # provides support for local system logging
module(load="imklog") # provides kernel logging support
module(load="mmjsonparse") #for parsing CEE-enhanced syslog messages
# try to parse structured logs
action(type="mmjsonparse")
# define a template to print field "foo"
template(name="justFoo" type="list") {
property(name="$!foo")
constant(value="\n") #we'll separate logs with a newline
}
# and now let's write the contents of field "foo" in a file
action(type="omfile"
template="justFoo"
file="/var/log/foo")
Вам все равно нужно будет использовать logger
или какой-то модуль любого языка, на котором написано ваше приложение, который взаимодействует с rsyslog
писать сообщения ...
# logger '@cee: {"foo":"bar"}'
# cat /var/log/foo
bar
Если вы отправите неструктурированный журнал или недопустимый JSON, в журнал ничего не будет добавлено.