2015-06-30 5 views
7

Я новичок в logrotate. когда configure переходит в свойство «dateformat», кажется, что logrotate не поддерживает strftime «% H». вот конфигурации: { ежедневно вращаются 2 размер 3M missingok notifempty dateext DateFormat -% Y% м% D_% H:% M:% S ... }logrotate dateformat кажется не поддерживается% H:% M:% S

повернутое формат файла имеет тенденцию выглядеть так: uwsgi_dev.log-20150630_% H:% M:% S, но я хочу точно «минуты и секунды часа».

благодаря

ответ

4

Поддержка% H была добавлена ​​в версии 3.9.0. В более ранних версиях, Logrotate не поддерживает STRFTIME «% H:

DateFormat FORMAT_STRING: Определяет расширение для dateext с использованием нотации, аналогичной STRFTIME (3) функции только% Y% м% D и% S спецификаторы. допускается.

на странице Logrotate человек http://linux.die.net/man/8/logrotate

Однако, вы можете использовать %s в DateFormat строку, которая является количество секунд, прошедших с 1970-01-01. вы можете установить dateformat -%Y%m%d-%s. Это даст уникальные имена файлов при каждом повороте журнала, поэтому вы может вращать файл несколько раз в день. К сожалению, часть %s будет непросто читать, но вы можете легко преобразовать ее обратно в читаемую дату с perl -e "print scalar(localtime(1451214849))".

В некоторых системах программа date позволяет легко сделать такое преобразование с помощью date -d @1451214849 (например, GNU date). В большинстве систем (включая, например, Solaris date) вам может повезти с синтаксисом, например date -d "1970-01-01 + 1451214849 sec". Обратите внимание, что Busybox date поддерживает только трюк @, но не сложные выражения второго примера.

+1

Поддержка% H была добавлена ​​в версию [3.9.0] (https://github.com/logrotate/logrotate/blob/master/CHANGES). –

+1

Спасибо, Иван, хорошая точка; Я отредактировал свой ответ. –