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

Поддерживает ли файл конфигурации syslog-ng ротацию файлов журнала каждые 15 минут?

Я использую файл конфигурации syslog-ng destination конфигурация для создания ежечасных файлов журнала. Конфигурация, которую я использую для этого, выглядит следующим образом:

destination d_hourly {file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR.log");};

Теперь у меня есть требование создавать файлы каждые 15 или 30 минут. Я просмотрел макросы файла конфигурации, но такого макроса нет (который есть в ожидаемых строках). Есть ли способ написать пользовательскую функцию в конфигурации syslog-ng, которая возвращает значение, основанное на текущем времени, и которое может быть дополнено суффиксом в направлении назначения для syslog-ng.

Или есть другой способ добиться этого?

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

destination d_half_hourly {file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-$(/ $MIN 30).log");};

Из-за целочисленного деления все журналы с PID 1000 и датой 23.01.2015 с 05:00 до 05:29 будут помещены в

/var/log/tracker/pid1000-track-2015-01-23-05-0.log

и с 05:30 до 05:59 в

/var/log/tracker/pid1000-track-2015-01-23-05-1.log

Вы также можете увеличить частоту, изменив 30 на другой делитель.

такой встроенной функции нет, но в более новых версиях syslog-ng вы можете выполнять различные численные сравнения в фильтрах: http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.6-guides/en/syslog-ng-ose-v3.6-guide-admin/html/filters-comparing. html

Если вы объедините это со встроенными путями журналов, я думаю, вы сможете создать конфигурацию, которая будет делать то, что вам нужно. Например, что-то вроде этого псевдокода (просто для демонстрации идеи, он синтаксически неверен):

log { source_mysource
   log { filter(is-$MIN-less-than-15) destination(file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-0-15.log")) }
   log { filter(is-$MIN-between-16-and-30) destination(file("/var/log/tracker/pid$PID-track-$YEAR-$MONTH-$DAY-$HOUR-16-30.log")) }
...
}

HTH,

С Уважением,

Роберт Фекете