「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Node.js アプリのログ記録のベスト プラクティス

Node.js アプリのログ記録のベスト プラクティス

2024 年 8 月 23 日に公開
ブラウズ:155

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 リクエスト ロガー ミドルウェア

?ツール: モーガン
?説明: Express.js
での HTTP リクエストのログ記録を簡素化します。 ?主な機能:

  • 事前定義されたログ形式
  • カスタム トークンのサポート
  • Express.js との簡単な統合
javascriptCopyconst express = require('express');
const morgan = require('morgan');

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

3. Bunyan: Node.js の JSON ロギング

?ツール:バニヤン
?説明: Node.js アプリケーションの構造化された JSON ロギング
?主な機能:

  • デフォルトの JSON ログ形式
  • 子ロガーをサポート
  • ログを表示するための組み込み CLI
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. debug: 小さなデバッグユーティリティ

?ツール: デバッグ
?説明: 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 スタック
?説明: ログ管理と分析のための強力な組み合わせ
?主な機能:

  • 集中ログ
  • リアルタイムログ分析
  • ビジュアライゼーションとダッシュボード
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. New Relic: アプリケーションのパフォーマンス監視

?ツール: New Relic
?説明: 包括的なアプリケーションパフォーマンス監視
?主な機能:

  • リアルタイムのパフォーマンス指標
  • エラー分析
  • カスタムインスツルメンテーション
javascriptCopyconst newrelic = require('newrelic');

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

10. Loggly: クラウドベースのログ管理

?ツール: 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 から Hello World!");

おまけのヒント: 構造化されたロギング

選択したツールに関係なく、構造化ログを実装すると、ログ分析機能が大幅に向上します。

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

これらの追加ツールとプラクティスを使用すると、基本的なデバッグから高度なアプリケーション パフォーマンス監視までのすべてをカバーする包括的なログ戦略が得られます。効果的なロギングの鍵は、特定のニーズに適したツールを選択し、コードベース全体にベスト プラクティスを一貫して適用することであることを忘れないでください。

Web アプリのデバッグにサポートが必要な場合は、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