rsyslog не записывает динамический файл журнала

rsyslog не записывает динамический файл журнала

Файлы модулей systemd для моих приложений Java (в Ubuntu 18.04), похоже, работают — я настроил отправку stdout и stderr в syslog, и записи журнала появились в /var/log/syslog.

Однако я хочу использовать динамические имена, поэтому я добавил /etc/rsyslog.d/10-myapp.conf, содержащий:

$CreateDirs on

:programname, startswith, "myapp-" {
  /var/log/apps/$programname.log
  stop
}

Затем я перезапустил rsyslog... и получил файл с именем $programname.log в каталоге.

Я подозреваю, что проблема может быть в том, как я указал динамическое имя файла - я вижу, что в других местах люди используютдругой синтаксис для выборасообщение вместе с %...% вокруг имени переменной. Однако попытка сделать следующее (и перезапуск rsyslog) не помогла:

:programname, startswith, "myapp-" {
  "/var/log/apps/%programname%.log"
  stop
}

Это дало мне файл с именем %programname%.log

решение1

Чтобы использовать динамические имена файлов, вам нужно использовать шаблон. Он присваивает имя строке (обычно DynFileв примерах) и интерполирует %property%значения в строке при использовании. Чтобы использовать шаблон в устаревшем синтаксисе, вам нужно добавить к нему префикс ?.Try

$template DynFile,"/var/log/apps/%programname%.log"
:programname, startswith, "myapp-" {
  ?DynFile
  stop
}

Синтаксис non-legacy немного более явный и иногда может быть более читабельным. Вы на самом деле используете встроенныйомфайлмодуль. Осторожно,шаблоныимеют 2 различных применения: как динамические имена файлов и как формат для записи данных. Однако для простых строк они определяются таким же образом, например:

template(name="myfile" type="string"
     string="/var/log/apps/%programname%.log")

if ($programname startswith "myapp-") then {
     action(type="omfile" dynaFile="myfile")
     stop
}

Ключевые слова, такие как, dynaFileдолжны быть написаны точно. Обратите внимание, что action()есть template=...опция ключевого слова. То есть, чтобы предоставить шаблон для данных, записанных в файле.

Связанный контент