TypeScript:
Логування
Як це робити:
У TypeScript ви можете легко реалізувати базове логування, використовуючи методи консолі, або інтегрувати більш складне логування за допомогою бібліотек, таких як winston
або pino
. Ось приклад базового використання console.log
та більш складний з winston
.
// Базове логування у консолі
console.log('Інформація: Запуск програми...');
console.error('Помилка: Неможливо отримати дані.');
// Приклад виведення
// Інформація: Запуск програми...
// Помилка: Неможливо отримати дані.
Для більш надійного логування налаштуємо winston
:
import { createLogger, format, transports } from 'winston';
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
transports: [
new transports.Console(),
new transports.File({ filename: 'combined.log' })
]
});
logger.info('Сервер запущено!');
logger.warn('Попередження: Недостатньо місця на диску.');
logger.error('Не вдалося підключитися до бази даних.');
// Приклад виведення у файлі combined.log
// 2023-01-20 14:42:07 info: Сервер запущено!
// 2023-01-20 14:42:09 warn: Попередження: Недостатньо місця на диску.
// 2023-01-20 14:42:12 error: Не вдалося підключитися до бази даних.
Детальніше:
Концепція логування в контексті обчислень сягає корінням початків програмування, де сам термін пішов від “логбука”, системи ведення морських щоденників. Історично, програмні події часто реєструвалися у фізичних роздруківках або термінальних виходах, особливо під час головної комп’ютерної ери.
Плин часу до сьогодні, і ви маєте безліч інструментів та бібліотек на вашому розпорядженні, які задовольняють різні потреби у логуванні, від простих текстових файлів до складних систем керування логами. Альтернативи winston
включають pino
, який відрізняється високою продуктивністю, та Bunyan
, що базується на JSON. При роботі з Node.js бібліотеки логування часто надають механізми потоків для перенаправлення логів у різні напрямки, підтримку ротації логів та налаштування форматерів.
Що стосується реалізації, повідомлення логів зазвичай містять часову мітку, рівень серйозності (такий як інформація, попередження, помилка) та саме повідомлення. Добрі практики логування рекомендують правильно класифікувати рівні логів, уникати конфіденційних даних у логах, та враховувати вплив на продуктивність у програмах з високим пропускним потоком.