Ruby:
Логування
Як робити:
Ruby має вбудований модуль для логування, Logger
, яким надзвичайно легко користуватися. Ось швидкий приклад, щоб ви могли розпочати:
require 'logger'
# Створіть Logger, що виводить до STDOUT
logger = Logger.new(STDOUT)
logger.level = Logger::INFO
# Приклад повідомлень до логу
logger.info("Це інформаційне повідомлення")
logger.warn("Це попередження")
logger.error("Це повідомлення про помилку")
Запуск вищенаведеного скрипта дасть приблизно такий результат:
I, [2023-03-15T10:00:00.123456 #1234] INFO -- : Це інформаційне повідомлення
W, [2023-03-15T10:00:01.234567 #1234] WARN -- : Це попередження
E, [2023-03-15T10:00:02.345678 #1234] ERROR -- : Це повідомлення про помилку
Ви можете налаштувати формат логу та рівень, щоб відфільтрувати непотрібний шум, а також направити логи до різних виходів, як-от файл чи навіть зовнішній сервіс логування.
Поглиблено
Логування - це мов би старовинна традиція в програмуванні. Історично логи були простими текстовими файлами, які вручну оброблялися за допомогою інструментів на кшталт grep
. Але концепція переросла в цілу екосистему потужних фреймворків та сервісів логування, як-от Log4j, Syslog в Linux або Sematext і Loggly в епоху хмарних технологій.
Logger
в Ruby - це простий спосіб розпочати, але якщо вам потрібно більше потужності та гнучкості, ви могли б ознайомитися з альтернативами, такими як Lograge чи Semantic Logger. Ці бібліотеки добре працюють з Ruby програмами, пропонуючи більш точний контроль за форматуванням логів, включно зі структурованими логами (формат JSON), кращу продуктивність та безшовну інтеграцію з іншими сервісами.
Кожна бібліотека логування Ruby має свій власний спосіб роботи, але всі вони, в основному, обертаються навколо ідеї інстанса логера, до якого ви надсилаєте повідомлення. Логер обробляє ці повідомлення залежно від встановлених рівнів - DEBUG, INFO, WARN, ERROR, FATAL і UNKNOWN - і вирішує, що з ними робити: вивести їх, зберегти у файл, відправити через мережу і т.д.
Див. також
Для поглиблення в тему вбудованого модуля логування Ruby, ознайомтеся з офіційною документацією:
Якщо ви зацікавлені у більш розширеному логуванні або хочете дослідити сторонні геми:
Для загальних практик та філософії логування (не специфічних для Ruby), ці статті є вічнозеленими читаннями: