Winston と Morgan による高度な Node.js API ロギング

WBOY
リリース: 2024-07-20 07:37:29
オリジナル
700 人が閲覧しました

Advanced Node.js API Logging with Winston and Morgan

ログはアプリケーションの重要な部分であり、アプリケーションの動作に関する洞察を提供し、問題のデバッグに役立ち、パフォーマンスを監視します。 Node.js API では、Winston や Morgan などのライブラリを使用して高度なログを実現できます。この記事では、Node.js API で高度なログ記録を行うための Winston と Morgan のセットアップと使用について説明します。

高度なログ記録が必要な理由
高度なログ記録はいくつかの理由から不可欠です:

  • デバッグとトラブルシューティング: ログにはアプリケーション イベントの詳細な履歴が記録され、問題を診断する際に非常に役立ちます。これらは、エラーの根本原因を特定し、問題に至る一連のアクションを理解するのに役立ちます。

  • 監視とメンテナンス: ログを継続的に監視することで、開発者はアプリケーションの健全性とパフォーマンスを追跡できます。ログを分析することで、異常、パフォーマンスのボトルネック、潜在的な問題を重大になる前に検出できます。

  • 監査とコンプライアンス: 多くのアプリケーション、特に機密データを扱うアプリケーションでは、詳細なログを維持することがコンプライアンス要件です。ログは、ユーザーのアクションとシステムの変更の記録を提供します。これは、監査と規制遵守にとって重要となる可能性があります。

  • セキュリティ: ログイン試行の失敗、不正アクセス、不審なアクティビティなどのセキュリティ関連イベントをログに記録することは、セキュリティの脅威を検出して対応するために非常に重要です。高度なロギングは、安全なアプリケーション環境を維持するのに役立ちます。

目次

  1. ウィンストンとモーガンの紹介
  2. Node.js プロジェクトのセットアップ
  3. ウィンストンとモーガンのインストール
  4. 高度なログ記録用に Winston を構成する
  5. HTTP リクエストログ用に Morgan を統合する
  6. ウィンストンとモーガンの組み合わせ
  7. ログ形式のカスタマイズ
  8. さまざまなトランスポートへのロギング
  9. エラー処理とログ
  10. 結論

1.ウィンストンとモーガンの紹介
Winston は、Node.js 用の多用途で使いやすいログ ライブラリです。ログ メッセージの複数のトランスポートをサポートしています。つまり、さまざまな形式とレベルでさまざまな場所 (コンソール、ファイル、リモート サーバーなど) にログを記録できます。

Morgan は、Node.js 用の HTTP リクエスト ロガー ミドルウェアです。これにより、事前定義された形式での HTTP リクエストのログ記録が簡素化され、API で受信リクエストとレスポンスを追跡するのに非常に役立ちます。

2.Node.js プロジェクトのセットアップ
まず、新しい Node.js プロジェクトを作成します (まだない場合)。

mkdir node-api-logging
cd node-api-logging
npm init -y
ログイン後にコピー

3.Winston と Morgan のインストール
Winston と Morgan を Express とともにインストールします (基本 API のセットアップ用):

npm install express winston morgan
ログイン後にコピー

4.高度なログ記録用に Winston を構成する
Winston を構成するための logger.js ファイルを作成します:

// 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.HTTP リクエストログのための Morgan の統合
Morgan と Winston を統合するための middleware/logger.js ファイルを作成します:

// 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 を組み合わせることで、Node.js API で高度なログ記録を実現できます。 Winston はアプリケーション レベルのイベントをログに記録するための堅牢なフレームワークを提供し、Morgan は HTTP リクエストのログを簡素化します。これらを組み合わせることで、アプリケーションの監視とデバッグの能力を強化する包括的なログ ソリューションが提供されます。

最終コードの概要
ファイルとその内容を簡単にまとめます:

  • logger.js: Winston をカスタムの書式設定とトランスポートで構成します。
  • middleware/logger.js: Morgan と Winston を統合します。
  • app.js: Winston と Morgan の両方を統合する Express アプリケーションをセットアップします。 この設定を使用すると、Node.js API のログを効果的に記録して監視できるため、保守とデバッグが容易になります。

以上がWinston と Morgan による高度な Node.js API ロギングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!