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), ці статті є вічнозеленими читаннями: