«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Рекомендации по ведению журналов для вашего приложения Node.js

Рекомендации по ведению журналов для вашего приложения Node.js

Опубликовано 23 августа 2024 г.
Просматривать:343

Logging Best Practices For Your Node.js App

Для разработчика Node.js ведение журнала — это практически все, что касается отладки, мониторинга и поддержки ваших приложений. Но используете ли вы лучшие практики ведения журналов? Давайте рассмотрим некоторые методы ведения журналов, которые помогут вывести ваши приложения Node.js на новый уровень.

Чтобы узнать больше, прочтите полную публикацию в блоге.

1. Уинстон: швейцарский армейский нож лесозаготовки

? Инструмент: Уинстон
? Описание: Универсальная библиотека журналирования для Node.js
? Ключевые особенности:

  • Несколько вариантов транспортировки (консоль, файл, база данных)
  • Настраиваемые уровни журнала
  • Поддерживает ведение журналов в различных форматах (JSON, обычный текст)
javascriptCopyconst winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

2. Morgan: промежуточное ПО для регистрации HTTP-запросов

? Инструмент: Морган
? Описание: Упрощает регистрацию HTTP-запросов в Express.js
? Ключевые особенности:

  • Предварительно определенные форматы журналов
  • Поддержка собственных токенов
  • Простая интеграция с Express.js
javascriptCopyconst express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

3. Буньян: ведение журнала JSON для Node.js

? Инструмент: Буньян
? Описание: Структурированное ведение журнала JSON для приложений Node.js
? Ключевые особенности:

  • Формат журнала JSON по умолчанию
  • Поддержка дочерних регистраторов
  • Встроенный интерфейс командной строки для просмотра логов
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

log.info("Hi");
log.warn({lang: 'fr'}, "Au revoir");

4. Pino: сверхбыстрый регистратор Node.js

? Инструмент: Пино
? Описание. Ведение журнала с минимальными издержками с выводом в формате JSON
? Ключевые особенности:

  • Чрезвычайно высокая производительность
  • Автоматическая ротация журналов
  • Поддержка дочерних регистраторов
javascriptCopyconst pino = require('pino');
const logger = pino();

logger.info('hello world');
logger.error('this is at error level');

5. отладка: крошечная утилита отладки

? Инструмент: отладка
? Описание: Небольшая утилита отладки для Node.js
? Ключевые особенности:

  • Легкий и простой в использовании
  • Выборочная отладка с использованием пространств имен
  • Поддержка браузера
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js: гибкое ведение журналов для JavaScript

? Инструмент: Log4js
? Описание: Преобразование платформы log4j в JavaScript
? Ключевые особенности:

  • Иерархические уровни журналирования
  • Несколько выходных приложений
  • Настраиваемые макеты
javascriptCopyconst log4js = require("log4js");
log4js.configure({
  appenders: { cheese: { type: "file", filename: "cheese.log" } },
  categories: { default: { appenders: ["cheese"], level: "error" } }
});

const logger = log4js.getLogger("cheese");
logger.error("Cheese is too ripe!");

7. Elasticsearch, Logstash и Kibana (стек ELK)

? Инструмент: ELK Stack
? Описание: Мощная комбинация для управления и анализа журналов
? Ключевые особенности:

  • Централизованное журналирование
  • Анализ журналов в реальном времени
  • Визуализации и информационные панели
javascriptCopyconst winston = require('winston');
const Elasticsearch = require('winston-elasticsearch');

const esTransportOpts = {
  level: 'info',
  clientOpts: { node: 'http://localhost:9200' }
};
const logger = winston.createLogger({
  transports: [
    new Elasticsearch(esTransportOpts)
  ]
});

8. Sentry: отслеживание ошибок и мониторинг производительности

? Инструмент: Часовой
? Описание: Отслеживание ошибок и мониторинг производительности в режиме реального времени
? Ключевые особенности:

  • Автоматическое фиксирование ошибок
  • Отслеживание выпуска
  • Мониторинг производительности
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://[email protected]/0" });

try {
  someFunction();
} catch (e) {
  Sentry.captureException(e);
}

9. Новая реликвия: мониторинг производительности приложений

? Инструмент: Новая Реликвия
? Описание: Комплексный мониторинг производительности приложений
? Ключевые особенности:

  • Показатели эффективности в реальном времени
  • Аналитика ошибок
  • Пользовательские инструменты
javascriptCopyconst newrelic = require('newrelic');

newrelic.setTransactionName('myCustomTransaction');
// Your application code here

10. Loggly: облачное управление журналами

? Инструмент: Логгли
? Описание: Облачный сервис управления журналами и аналитики
? Ключевые особенности:

  • Централизованное управление журналами
  • Поиск и анализ журналов в реальном времени
  • Пользовательские информационные панели и оповещения
javascriptCopyconst winston = require('winston');
const { Loggly } = require('winston-loggly-bulk');

winston.add(new Loggly({
    token: "YOUR-TOKEN",
    subdomain: "YOUR-SUBDOMAIN",
    tags: ["Winston-NodeJS"],
    json: true
}));

winston.log('info', "Привет, мир из Node.js!");

Бонусный совет: структурированное журналирование

Независимо от того, какой инструмент вы выберете, внедрение структурированного ведения журналов может значительно улучшить ваши возможности анализа журналов:

javascriptCopylogger.info({
  event: 'user_login',
  userId: user.id,
  timestamp: new Date().toISOString(),
  ipAddress: req.ip
});

Используя эти дополнительные инструменты и методы, вы получите комплексную стратегию ведения журналов, которая охватывает все: от базовой отладки до расширенного мониторинга производительности приложений. Помните, что ключом к эффективному ведению журналов является выбор правильных инструментов для ваших конкретных потребностей и последовательное применение лучших практик по всей вашей кодовой базе.

Если вам нужна помощь в отладке вашего веб-приложения, посетите https://alerty.ai, чтобы узнать больше об простом мониторинге внешнего интерфейса.

Удачного входа в систему, и пусть ваши приложения Node.js работают без сбоев! ??

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/alertyai/logging-best-practices-for-your-nodejs-app-4o9k?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3