==== Стандарт хранения логов: ==== 1. Лог демона в обычном случае должен храниться в /var/log/<имя демона>.log, например для vsftpd: /var/log/vsftpd.log 2. В некоторых случаях (например, для демона worker) нужно ежедневное ротирование лога, тогда мы должны хранить его лог в директории /var/log/<имя демона>/<имя демона>.log, например: /var/log/worker/worker.log /var/log/worker/objectstatus.log /var/log/worker/account_voip.log 3. В ручных скриптах или скриптах, вызываемых из других скриптов/демонов, вывод сделует делать в stdout или stderr. Логировать их вывод должна вызывающая сторона Например: 50 2 * * * root /app/base/usr/local/bin/cron_backup.sh &>>/app/base/var/log/cron_backup.sh.log Исключение: если скрипт генерирует излишне объемный вывод, который необходим только при детальном дебаге, то его можно логировать в соответствии с обычными стандартами /var/log/<имя демона>.log и обязательно должен писать о том, что он скрывает вывод (и куда скрывает) в stdout! Например, скрипт /app/asr_billing//usr/local/bin/backup_db_v2.sh выводит все в стандартный вывод, но вывод gbak сохраняет в /var/log/backup_db_v2.sh.log// 4. Особым случаем является каталог /app/asr_billing/var/log/abonents//.. куда дублируется вывод лога событий в воркера по каждому абоненту. Например, /app/asr_billing/var/log/abonents/13/event_1368.log **Другие особые случаи этого пункта и другие исключения нужно согласовывать и отражать в текущей странице документации.** ==== Стандарт по logrotate до 2018 года (потом добавим чистку которую настраивает Админ 3-6-12 мес): ==== 1. Сдвигаем компрессию на 2 месяца, используя опции compress и delaycompress*. При ротейте по дням компрессию не используем*! 2. Старые логи нельзя удалять автоматически средствами logrotate! Выставляем опцию rotate 99999. 3. где по дням - не гзипуем 4. для ежемесячных, формат суффикса без дня: dateformat -%Y%m 5. можно пользоваться только ежедневным и ежемесячным ротированием === Пример1. Ежемесячный logrotate: === /var/log/firebird/firebird.log { monthly dateext dateformat -%Y%m missingok compress delaycompress copytruncate rotate 99999 } === Пример2. Ежедневный logrotate: === /var/log/msgd/msgd.log { daily dateext dateformat -%Y%m%d missingok copytruncate ### ОБЯЗАТЕЛЬНО ИСПОЛЬЗОВАТЬ nocompress ДЛЯ ЕЖЕДНЕВНОГО logrotate nocompress rotate 99999 } ==== Примечания: ==== 1. Если демон работает не под рутом, то не забудьте выставить правильные права для папки с логами ====== rsyslog ====== Работает в base и в чрутах через /dev/log. (не devfs) Прием по tcp/udp не настроен. Возможно, из чрутовых rsyslog'ов стоит убрать загрузку модуля imklog, чтобы из ядра все сообщения попадали только в рутовый rsyslog. Sync для файлов выключен по умолчанию, минусы перед файлами в конфиге указывать не нужно # File syncing capability is disabled by default. This feature is usually not required, # not useful and an extreme performance hit #$ActionFileEnableSync on ~~OWNERAPPROVE~~ /*Не удаляйте эту строку и ниже!*/ {(rater>id=1|name=Прочитал_правила_разработки:стандарты:хранение_логов_и_logrotate|type=vote|trace=user|tracedetails=1)}