Я написав просту програму, даталог, щоб розділити загальні журнали на основі зареєстрованої дати, на відміну від поточного системного часу, коли програма журналу бачить лінію журналу. Це може бути, а може і не бути саме тим, що кронолог чи інший роздільник журналів вже робить, але було швидше написати моє власне, ніж з'ясувати, що роблять інші.
Використовуючи рік та місяць у запиті, що реєструється, рядок записується у файл або трубу, яка включає YYYYMM, обчислену з даних, що реєструються. Так, це дещо специфічно для загального формату журналу. Перша [передбачається розмежувати дату. Остерігайтеся IPv6-адрес. :)
Для аналізу журналів важливо, щоб кожен журнал дійсно містив лише запити на кожен відповідний місяць, а кожен журнал в ідеалі повинен бути повним для правильних результатів аналізу. Недостатньо визначити ім'я файлу на основі поточного часу в роздільника журналу, тому що повільний запит, починаючи з 23:59:59, потім потрапить у файл журналу за неправильний місяць.
Я використовую це з nginx за допомогою іменного fifo, який перевіряється на існування до запуску nginx. Зауважте, що в програмі є компроміс між виявленням помилок та буферизованим виводом, де datelog в даний час віддає перевагу буферизованому виводу з міркувань продуктивності, тому переконайтеся, що ваша настройка дійсно працює, особливо при використанні оболонок, щоб не втратити жодних даних журналу .
Вихідний код: http://stuge.se/datelog.c
Будь ласка, не соромтеся надсилати мені будь-які відгуки та, звичайно, патчі!