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

Logrotate: как получить доступ к выходному файлу в postrotate

Я вращаюсь Nginx журналы ежедневно (с dateext). После ротации я хочу проанализировать файл за только что прошедший день и составить электронное письмо с количеством ошибок, возвращенных сервером Nginx.

Как я могу получить доступ к выходному файлу в разделе postrotate / endcript в logrotate ?

Если вы не используете директиву sharedscripts, то ваш сценарий postrotate получит в виде $ 1 файл, инициировавший ротацию журнала. Это может помочь, если вы пытаетесь использовать общий сценарий с несколькими строфами logrotate. То есть, учитывая что-то вроде этого:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Если какие-либо совпадающие файлы необходимо повернуть, ваш сценарий будет вызван с параметром $ 1, установленным в "/var/log/sample1.log", "/var/log/sample2.log" или "/var/log/sample3.log" "в зависимости от обстоятельств. Затем вы можете добавить «.1», чтобы найти файл, который был только что повернут.

Если вы используете опцию «sharedscripts», тогда ваш скрипт будет вызываться с параметром $ 1, установленным в «/var/log/sample1.log /var/log/sample[23pting.log» (что поможет вам идентифицировать конкретную строфу, но не точный файл).

Надеюсь, это даст вам возможность начать. Обратите внимание, что это будет работать только для logrotate> v3.7.5.

Мне не известны какие-либо переменные, которые можно использовать, если это то, что вы ищете. Однако сразу после ротации журнала вы должны точно знать имя, на которое был повернут файл, на основе конфигурации, которую вы установили для ротации (/var/log/somefile.1 или т.п).

Возможно, было бы легче ответить, если бы вы описали реальную проблему, которую пытаетесь решить?