Файли журналів є найважливішою частиною будь-якої серйозної програми: якщо вхід у додаток корисний, вони дозволяють вам бачити, які ключові події відбулися та коли; які помилки сталися; і загальне здоров'я додатків, яке виходить за межі будь-якого моніторингу, розробленого в ньому. Це звичайно почути про проблему, перевірити вбудовану діагностику програми (відкрити веб-консоль або скористатися діагностичним інструментом на зразок JMX), а потім вдатися до перевірки файли журналу.
Якщо ви використовуєте нетекстовий формат, то ви негайно стикаєтесь із перешкодою: як ви читаєте двійкові журнали? За допомогою інструмента для читання журналу, який відсутній на ваших виробничих серверах! Або це так, але о дорогий, ми додали нове поле, і це старий читач. Хіба ми цього не тестували? Так, але ніхто його тут не розгортав. Тим часом ваш екран починає світитися, коли користувачі обзивають вас.
Або, можливо, це не ваш додаток, але ви підтримуєте підтримку і думаєте, що знаєте, що це інша система та WTF? журнали у двійковому форматі? Гаразд, починайте читати сторінки вікі, а з чого ви починаєте? Тепер я скопіював їх на свою локальну машину, але - вони пошкоджені? Я зробив якусь небінарну передачу? Або зашкоджено засіб читання журналу?
Коротше кажучи, інструменти для читання тексту є багатоплановими та всюдисущими, а журнали часто довговічні та їх іноді потрібно читати поспіхом . Якщо ви винайдете двійковий формат, то ви відрізані від цілого світу добре зрозумілих і простих у використанні інструментів. Серйозна втрата функціональності саме тоді, коли це потрібно.
Більшість середовищ ведення журналу досягають компромісу: зберігайте поточні журнали читаними та наявними та стискайте старіші. Це означає, що ви отримуєте користь від стиснення - тим більше, що насправді тому, що двійковий формат не зменшить повідомлення журналу. У той же час, ви можете використовувати менше і grep тощо.
Отже, які можливі переваги можуть виникнути від використання двійкових? Невелика кількість ефективності простору - все більш неважлива. Менше (чи менше) пише? Ну, можливо - насправді кількість записів буде залежати від кількості диск-комітів, тому, якщо рядки журналу значно менші за розмір блоків дисків, то SSD призначатиме нові блоки знову і знову. Отже, двійкові дані є правильним вибором, якщо:
- ви пишете величезну кількість структурованих даних
- журнали повинні бути створені особливо швидко
- вам навряд чи знадобиться їх аналізувати в умовах "підтримки"
але це звучить не так, як реєстрація програм; це вихідні файли або записи про активність. Поміщення їх у файл, ймовірно, лише за крок від їх запису до бази даних.
EDIT
Я думаю, що тут існує загальна плутанина між "програмами журналів" (за рамками реєстрації) та "записами" (як у журналах доступу, записах входу тощо). Я підозрюю, що питання найбільше стосується останнього, і в цьому випадку питання є набагато менш чітким. Цілком прийнятно, щоб запис запису повідомлень або журнал активності був у компактному форматі, тим більше, що він, ймовірно, буде чітко визначений і використовується для аналізу, а не для усунення несправностей. Інструменти, які роблять це, включають tcpdump
монітор системи Unix sar
. Журнали програм з іншого боку, як правило, набагато більше спеціальні.