Skip to content

Instantly share code, notes, and snippets.

@vertigra
Last active February 7, 2017 12:26
Show Gist options
  • Save vertigra/56cd54bc3b805f2eeeabd703b60e5b03 to your computer and use it in GitHub Desktop.
Save vertigra/56cd54bc3b805f2eeeabd703b60e5b03 to your computer and use it in GitHub Desktop.
Ротация логов TeamCity с помощью logrotate Debian

Ротация логов TeamCity с помощью logrotate Debian

# joe /etc/logrotate.conf

Добавляем:

# system-specific logs may be configured here

/opt/TeamCity/logs/*.log {
    notifempty
    compress
    delaycompress
    missingok
    daily
    create 644 username username
    rotate 7
}

Значений параметров взято отсюда:

compress

Старые версии файлов журналов будут сжаты (по умолчанию gzip). См. также nocompress.

compresscmd

Позволяет указать команду для сжатия файлов журналов. По умолчанию gzip. См. также compress.

uncompresscmd

Директива позволяет указать команду для декомпрессии файлов журналов. По умолчанию gunzip.

compressext

Если используется сжатие, определяет расширение сжатых файлов журналов. По умолчанию определяется из настроек команды > сжатия.

compressoptions

Программе сжатия может быть передана опция командной строки, если та их использует. Стандартно для gzip применяется "-9" (максимальное сжатие).

copy

Создать копию файла журнала, не изменяя оригинал вовсе. Этот параметр может быть использован, например, для создания моментального снимка (среза) текущего файла журнала, или когда некоторой другой утилите требуется обрезать или подчистить файл. При использовании этого параметра не имеет силы директива create, так как старый файл журнала остаётся на своём месте.

copytruncate

После создания копии, обрезать исходный файл журнала взамен перемещения старого файла журнала и создания нового. Это может найти применение в том случае, когда некоторой программе нельзя указать закрыть её журнал, и таким образом можно постоянно продолжать запись (добавление) в существующий файл журнала. Примите во внимание, что хотя между копированием файла и его обрезанием очень маленький промежуток времени, некоторая часть журналируемых данных может быть потеряна. При использовании этого параметра, не имеет силы директива create, так как старый файл журнала остаётся на своём месте.

create режим владелец группа

Непосредственно после обращения (перед выполнением скрипта postrotate) создать файл журнала (с тем же именем, что и только что сдвинутый журнал). Аргумент режим определяет режим доступа к файлу журнала в восьмеричном виде (единообразный с chmod(2)), владелец определяет имя пользователя, владеющего создаваемым файлом журнала, и группа определяет группу, к которой будет принадлежать файл журнала. Любые из этих атрибутов могут быть опущены; в этом случае вместо них для нового файла будут использованы атрибуты, имеющие те же значения, что и первоначальный файл журнала. Этот параметр может быть отключен использованием директивы nocreate.

daily

Ежедневное обращение файлов журналов.

delaycompress

Отложить сжатие предыдущего файла журнала до следующего циклического сдвига. Эта директива имеет силу только в комбинации с compress. Это может быть использовано в том случае, если некой программе нельзя указать закрыть её файл журнала, и таким образом, можно некоторое время продолжать запись в предыдущий файл журнала. extension расширение

Файлы журналов после обращение получат заданное расширение. Если используется сжатие, то после указанного расширения программа сжатия добавит ещё одно (обычно .gz).

ifempty

Сдвигать файл журнала, даже если он пустой; это поведение можно изменить, применив директиву notifempty (по умолчанию активна ifempty).

include файл_или_каталог

Читает файл, переданный в качестве аргумента, так, как будто он включен построчно в тело конфигурационного файла с того места, где указана директива include. Если задан каталог, то содержащиеся в нём файлы будут прочитаны в алфавитном порядке, прежде чем переданы на обработку для включения. Файлы, не являющиеся обычными (такие как каталоги и именованные каналы), а также файлы, оканчивающиеся запрещёнными расширениями (определёнными параметром tabooext) -- будут проигнорированы. Директива include не может использоваться внутри определения файла журнала.

mail адрес

По окончании цикла обращения журнал будет отправлен электронной почтой на адрес. Если для отдельных журналов это не требуется, то можно применить директиву nomail.

mailfirst

При использовании команды mail, посылать только что сдвинутый файл, а не закончивший цикл обращения файл журнала.

maillast

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

missingok

В случае отсутствия файла журнала перейти к обработке следующего не выдавая сообщения об ошибке. См. также nomissingok.

monthly

logrotate будет сдвигать файлы журналов раз в месяц (обычно первого числа каждого месяца).

nocompress

Не сжимать с помощью gzip старые версии файлов журналов. См. также compress.

nocopy

Не копировать исходный файл журнала и оставить его в штатном местоположении (это переопределяет параметр copy).

nocopytruncate

После создания копии, не обрезать исходный файл журнала в его штатном местоположении (это переопределяет параметр copytruncate).

nocreate

Не создавать новый файл журнала (это переопределяет директиву create).

nodelaycompress

Не откладывать сжатие сдвинутого файла журнала до следующего цикла обращения (это переопределяет директиву delaycompress).

nomail

Не отправлять старые файлы журналов почтой.

nomissingok

Если файл журнала не существует, выдать ошибку. Это установлено по умолчанию.

noolddir

После обращения, журналы остаются в том же каталоге, где расположены текущие журналы (это переопределяет директиву olddir).

nosharedscripts

Выполнять скрипты prerotate и postrotate для каждого обработанного журнала (это поведение задано по умолчанию, его можно переопределить параметром sharedscripts).

notifempty

Не сдвигать журнал, если он пуст (это переопределяет параметр ifempty).

olddir directory

Переместить сдвинутые журналы в каталог. Заданный каталог должен размещаться на том же физическом устройстве, что и обращаемый файл журнала. При использовании этого параметра все старые версии журнала будут попадать в каталог. Этот параметр может быть переопределён параметром noolddir.

postrotate/endscript

Строки с директивами, находящиеся между postrotate и endscript (которые сами должны располагаться на отдельных строках), будут выполнены после обращения журнала. Эти директивы могут находиться только внутри определения файла журнала. См. также > > prerotate.

prerotate/endscript

Строки с директивами, находящиеся между prerotate и endscript (которые сами должны располагаться на отдельных строках), будут выполнены перед обращением журнала и только в случае если журнал действительно будет сдвинут. Эти директивы могут находиться только внутри определения файла журнала. См. также postrotate.

rotate раз

Файл журнала будет сдвинут заданное количество раз, прежде чем будет удалён или послан по электронной почте на адрес, указанный в директиве mail. Если указано 0 раз, то старый журнал вместо обращения будет удалён.

size размер

Файлы журналов будут сдвинуты, когда станут больше указанного размера в байтах. Если размер оканчивается символом M, то размер интерпретируется в мегабайтах. Если использовать k, то можно задать размер в килобайтах. Таким образом, директивы size 100, size 100k, и size 100M являются верными.

sharedscripts

Обычно скрипты prescript и postscript выполняются для каждого обрабатываемого журнала; это значит, что один и то же скрипт может выполняться несколько раз для одной конфигурационной записи, которая охватывает множество файлов (как в примере /var/log/news/*). Если параметр sharedscript указан, то скрипты будут выполнены только один раз, вне зависимости от количества журналов, подходящих под заданный шаблон. Однако если ни один из журналов, соответствующих шаблону, не требует обращения, то скрипты не будут выполнены вовсе. Этот параметр переопределяет директиву nosharedscripts.

start число

Заданное число -- то, с которого начнётся счёт обращений. Например, если указать 0, после первого обращения (сдвига оригинального файла журнала) журналам будет присвоено расширение .0. Если указать 9, файлы журналов будут создаваться с расширением .9, пропустив 0-8. Файлы по-прежнему будут обращаться (сдвигаться) столько раз, сколько указано в директиве count.

tabooext [+] список_расширений

Изменяет текущий список запрещённых расширений (см. include). Если списку расширений предшествует знак +, то этот список прибавится к текущему, иначе заместит его. При первоначальном запуске список содержит следующие расширения: .rpmorig, .rpmsave, ,v, .swp, .rpmnew и ~.

weekly

Файлы журналов будут сдвинуты, если текущий день недели меньше дня недели, в который произошло последнее обращение журнала, или если с тех пор прошло больше недели. Это почти то же самое, что и обращение журналов по понедельникам, но работает лучше, если logrotate не запускается каждую ночь.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment