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

Расширенное ведение журнала API Node.js с Winston и Morgan

Опубликовано 31 июля 2024 г.
Просматривать:950

Advanced Node.js API Logging with Winston and Morgan

Журналирование — это важнейшая часть любого приложения, позволяющая получить представление о поведении приложения, помогающая отлаживать проблемы и отслеживать производительность. В API Node.js расширенное ведение журнала можно обеспечить с помощью таких библиотек, как Winston и Morgan. В этой статье вы узнаете, как настроить и использовать Winston и Morgan для расширенного ведения журналов в API Node.js.

Почему требуется расширенное ведение журнала
Расширенное ведение журнала необходимо по нескольким причинам:

  • Отладка и устранение неполадок: журналы предоставляют подробную историю событий приложения, что имеет неоценимое значение при диагностике проблем. Они помогают выявить основную причину ошибок и понять последовательность действий, ведущих к проблеме.

  • Мониторинг и обслуживание: непрерывный мониторинг журналов позволяет разработчикам отслеживать работоспособность и производительность приложения. Анализируя журналы, вы можете обнаружить аномалии, узкие места в производительности и потенциальные проблемы до того, как они станут критическими.

  • Аудит и соответствие требованиям: Для многих приложений, особенно тех, которые обрабатывают конфиденциальные данные, ведение подробных журналов является требованием соответствия. Журналы обеспечивают запись действий пользователей и изменений в системе, что может иметь решающее значение для аудита и соблюдения нормативных требований.

  • Безопасность: Регистрация событий, связанных с безопасностью, таких как неудачные попытки входа в систему, несанкционированный доступ и подозрительные действия, имеет решающее значение для обнаружения угроз безопасности и реагирования на них. Расширенное ведение журнала помогает поддерживать безопасную среду приложений.

Оглавление

  1. Знакомство с Уинстоном и Морганом
  2. Настройка проекта Node.js
  3. Установка Уинстона и Моргана
  4. Настройка Winston для расширенного ведения журнала
  5. Интеграция Morgan для ведения журнала HTTP-запросов
  6. Объединение Уинстона и Моргана
  7. Настройка форматов журналов
  8. Запись в разные транспорты
  9. Обработка и регистрация ошибок
  10. Заключение

1.Знакомство с Уинстоном и Морганом
Winston — это универсальная и простая в использовании библиотека журналирования для Node.js. Он поддерживает несколько видов транспорта для сообщений журнала, что означает, что вы можете осуществлять вход в разные места (консоль, файлы, удаленные серверы и т. д.) с различными форматами и уровнями.

Morgan — это промежуточное программное обеспечение для регистрации HTTP-запросов для Node.js. Он упрощает регистрацию HTTP-запросов в предопределенном формате, что может быть очень полезно для отслеживания входящих запросов и ответов в API.

2.Настройка проекта Node.js
Сначала создайте новый проект Node.js, если у вас его еще нет:

mkdir node-api-logging
cd node-api-logging
npm init -y

3.Установка Winston and Morgan
Установите Winston и Morgan вместе с Express (для настройки базового API):

npm install express winston morgan

4.Настройка Winston для расширенного ведения журналов
Создайте файл logger.js для настройки Winston:

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;

5.Интеграция Morgan для ведения журнала HTTP-запросов
Создайте файл промежуточного программного обеспечения/logger.js для интеграции Morgan с Winston:

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;

6.Объединение Уинстона и Моргана
Интегрируйте Winston и Morgan в свое приложение Express:

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});

7.Настройка форматов журналов
Вы можете настроить форматы журналов в Winston и Morgan. Например, вы можете захотеть регистрировать дополнительные сведения о запросе, такие как заголовки, параметры запроса или время ответа.

8.Запись на разные транспорты
Winston поддерживает различные транспорты. Вы можете войти в разные места назначения в зависимости от серьезности сообщений. Например, вы можете отправить журналы ошибок на удаленный сервер журналирования или в стороннюю службу, например Loggly или Papertrail.

9.Обработка и регистрация ошибок
Правильная обработка и регистрация ошибок необходимы для выявления и решения проблем. Убедитесь, что ваше промежуточное программное обеспечение для обработки ошибок регистрирует подробную информацию об ошибках с помощью Winston.

10.Заключение
Объединив Winston и Morgan, вы сможете добиться расширенного ведения журналов в своем API Node.js. Winston предоставляет надежную платформу для регистрации событий уровня приложения, а Morgan упрощает регистрацию HTTP-запросов. Вместе они дают вам комплексное решение для ведения журналов, которое расширяет ваши возможности мониторинга и отладки вашего приложения.

Окончательный обзор кода
Вот краткий обзор файлов и их содержимого:

  • logger.js: настраивает Winston с использованием пользовательского форматирования и транспорта.
  • middleware/logger.js: интегрирует Morgan с Winston.
  • app.js: настраивает приложение Express, объединяющее Winston и Morgan. Благодаря этой настройке вы можете эффективно регистрировать и отслеживать свой API Node.js, что упрощает его обслуживание и отладку.
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/dev_habib_nuhu/advanced-nodejs-api-logging-with-winston-and-morgan-4fb1?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3