Найдите различия между версиями файла журнала

1

Есть ли утилита, которая покажет вам разницу в каталоге файлов журналов в один момент времени и в текущий момент?

В настоящее время метод отладки приложений заключается в удалении всех журналов до возникновения проблемы, а затем воспроизведении ошибки и сохранении новых. Тем не менее, есть ли утилита, которая поможет мне сделать это, и чтобы избежать удаления существующих файлов журнала?

Я ищу утилиту для Linux. Я также забочусь только о новом контенте, а не о старых журналах.

monksy
источник
Единственный способ сделать это - сделать снимки журналов в разные моменты времени. Вы можете просто сделать cronjob, который создает резервные копии журналов в конце каждого дня, а затем вы можете вернуться и сравнить.
terdon
Я в порядке с инструментом, используемым для установки предыдущего момента времени.
monksy

Ответы:

2

Ну, если подойдет простая работа cron, вы можете настроить что-то вроде этого:

  1. Как root бежать crontab -e и добавьте эту строку в свои crontabs:

    00 22 * * * tar czf /log_backups/`date +%m%d%Y`.tgz /var/log/ 
    

    Это будет работать каждую ночь в 22:00 и создавать архив с именем .tgz в каталоге /log_backups/, Итак, если сегодня 16 апреля 2013 года, он создаст архив с именем 04162013.tgz

  2. Если вы хотите сравнить сегодняшние журналы apache со вчерашними, просто извлеките соответствующий tar-архив и сравните файлы (очевидно, вам потребуется резервная копия вчерашних журналов):

    tar xzf /log_backups/03162013.tgz -C /tmp/
    diff /var/log/apache2/error.log /tmp/var/log/apache2/error.log
    

Вы можете сделать это намного сложнее, извлекая только соответствующий файл из архива или выбирая, какие файлы добавить в архив и т. Д. И т. Д.

terdon
источник
1

Почему бы не использовать logrotate ( man страница )?

Похоже, это именно то, что вы ищете:

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

Обычно logrotate запускается как ежедневное задание cron. Это не изменит   регистрировать несколько раз в течение одного дня, если критерий для этого журнала не   в зависимости от размера журнала и logrotate запускается несколько раз каждый   день или если не используется опция -f или --force.

В командной строке может быть указано любое количество файлов конфигурации. Потом   файлы конфигурации могут переопределять параметры, указанные в более ранних файлах, поэтому   порядок, в котором перечислены файлы конфигурации logrotate, важен.   Как правило, один файл конфигурации, который включает в себя любые другие файлы конфигурации   которые необходимы, следует использовать. Смотрите ниже для получения дополнительной информации о том, как   использовать директиву include для достижения этой цели. Если каталог   в командной строке каждый файл в этом каталоге используется как   Конфигурационный файл

Если аргументы командной строки не указаны, logrotate выведет версию   и информация об авторских правах, вместе с кратким описанием использования. Если есть   ошибки возникают при ротации логов, logrotate будет выходить с ненулевым   статус.

warren
источник