このブログでは、ログ ライブラリを利用することの価値について説明し、Node.js 用に見つけた、最も評価の高い 10 個のログ ツールを紹介します。 @playerzero では、node.js ロギング ライブラリを頻繁に使用して、ログ イベントを作成および管理しています。現在、フロントエンド アプリケーションとバックエンド アプリケーションの両方にとって重要なことを監視する独自のアプローチをどのように導入しているかについて詳しくは、https://www.playerzero.app/ をご覧ください。 ピノ ウィンストン バニヤン モーガン ログレベル Log4js Npmlog 轟音 トレーサー シグナル 大まかな観点から見ると、Node.js ロギングは、開発者がアプリケーションのイベントとパフォーマンスを追跡し、問題を診断して修正し、システムの動作を監視し、十分な情報に基づいて意思決定を行うのに役立つため、重要です。ロギングはアプリケーションのアクティビティの記録を提供するため、開発者は問題を特定してデバッグし、ユーザーの行動を理解し、システムの全体的なパフォーマンスと安定性を向上させることができます。ロギングは、エラーの検出と修正、システム パフォーマンスの監視、およびセキュリティ インシデントの検出のために、運用環境でも役立ちます。 ロギングとトレース アプリケーションで何か問題が発生した場合、開発者はスタック トレースを介してそのソースを追跡することができます。しかし… スタック トレースだけに頼っていても、全体像は半分しかわかりません。トレースは、リクエストのフロー、データベース クエリ、外部 API 呼び出し、パフォーマンス メトリックなど、アプリケーションの実行に関する情報を提供します。これは非常に便利です。一般に、トレースは、アプリケーションの動作を詳細なレベルで理解し、パフォーマンスのボトルネックを特定するために使用されます。 ロギングは、全体像の残りの半分を埋めます。ロギングは、エラー、警告、パフォーマンス メトリック、デバッグ情報など、アプリケーションに関連するメッセージとイベントを記録するプロセスです。 Node.js でのログ記録は、問題の診断、ユーザーの行動の理解、およびアプリケーションの全体的なパフォーマンスと安定性の向上に使用されます。また、アプリケーション内のアクティビティの記録も提供されるため、開発者は問題を特定してデバッグし、より多くの情報に基づいて決定を下すことができます。 Node.js のロギング ライブラリを使用する理由 Node.js ロギング ライブラリを使用する必要がある理由はいくつかあります。 - ログ ライブラリはエラーと問題に関する詳細情報を提供するため、開発者はより効率的に問題を診断して修正できます。 デバッグの改善 - ロギングにより、アプリケーションの動作とパフォーマンスを明確に把握できるため、開発者は十分な情報に基づいて決定を下し、システムを改善できます。 可視性の向上 - ロギング ライブラリのパフォーマンスを最適化して、ロギングのオーバーヘッドを削減し、システム全体のパフォーマンスを向上させることができます。 パフォーマンスの向上 - 多くのログ ライブラリでは、集中ログ サーバーにログを書き込むことができるため、ログ データの収集、表示、分析が容易になります。 集中ログ - ログ ライブラリは、カスタム ログ レベル、出力形式、フィルターなど、特定のニーズに合わせてカスタマイズできます。 カスタマイズ ロギング レベル ログ レベルは、ログ メッセージの重要性または重大度を分類する方法です。通常、重大なエラーから情報メッセージまで、いくつかのレベルがあり、各レベルは、ライブラリ内のログ メッセージのフィルタリングに使用できる数値に関連付けられています。最も一般的なレベルは次のとおりです。 FATAL ログ レベル 当然のことながら、 ログ レベルは、アプリケーションの重大なエラーを示す重大度のレベルです。つまり、 レベルのログは、開発者の介入なしではアプリケーションを正常に実行し続けることができないことを示します。 FATAL FATAL ERROR ログ レベル ログ レベルは、アプリケーションが現在実行可能であることを示しますが、問題が発生しています。通常、これは、アプリケーションで必要なタスクが失敗したこと、つまり、例外、予期しない動作、または不適切な入力があったことを示します。 ERROR WARN ログレベル よりも重大度の低いログ レベルですが、それでも無視すべきではありません。 ログは、アプリケーション内の何かがより重大な問題の触媒になる可能性があることを示しているため、問題を事前に特定し、問題が深刻化するのを防ぐために使用できます。 WARN ERROR WARN INFO ログレベル ログ レベルは、ロギング システムで一般的な情報メッセージを示すために使用されるログ メッセージのタイプです。通常、プロセスの開始、タスクの完了、またはシステムの状態の変化など、アプリケーションまたはシステムで予想される定期的なイベントをログに記録するために使用されます。これらのアラートは、アプリケーションが正常に動作していることを確認するためのものであるため、通常は無視できます。 INFO DEBUG ログ レベル 通常、 ログ レベルは、デバッグ プロセス内でのみ役立つ情報を提供します。 ログは、最も詳細なタイプのログ メッセージであり、アプリケーションの内部動作の詳細なビューを提供します。 ログの主な目的は、開発者がシステムの動作を理解し、バグや問題を特定し、問題を診断できるようにすることです。 DEBUG DEBUG DEBUG 10 の最高の Node.js ロギング ライブラリとそれらを使い始める方法 #1。ピノ ピノのメリット Pino は、10.9K 以上の Github スターと npm での数百万回のダウンロードを誇る、老舗の非常に人気のあるロギング ツールです。 Pino は、Node.js アプリケーションでの使用に適したいくつかの重要な機能を提供するため、Node.js の一般的なロギング ライブラリです。 - Pino は、パフォーマンスに重点を置いて、高速かつ軽量になるように設計されています。ログ メッセージにバイナリ形式を使用するため、ログ出力を迅速かつ効率的に生成できます。 高速 - Pino はメッセージを JSON 形式でログに記録します。これにより、ログ データの解析、フィルタリング、および分析が容易になります。これにより、ログ データの検索、視覚化、分析、およびログ データの他のシステムへの統合が容易になります。 構造化ログ - Pino は高度に拡張できるように設計されており、ログ データをファイルに書き込んだり、ログ データをリモート サーバーに送信したりするなどの追加機能を追加するために使用できる組み込みプラグインが多数含まれています。 拡張が簡単 - Pino は、リソースの使用が最小限であるため、非常に効率的な Node.js ロギング ライブラリです。 Pino を使用したロギング プロセスは、メッセージを徐々に蓄積し、アプリケーションのスロットリングと 1 秒あたりのリクエスト数の減少につながります。スロットリングは、イベントが複数回発生した場合でも、イベントに接続された関数が指定された時間枠内で 1 回だけ実行されるようにトリガーされる手法です。 低オーバーヘッド - Pino は、ファイルへの書き込み、コンソールでの表示、Sentry、Azure Application Insights、CouchDB などのプラットフォームの利用など、ログを送信するためのさまざまなオプションを提供します。 トランスポート Node.js アプリケーションで Pino を使用するには、次の手順に従います。 ピノのインストール Pino をインストールするには、新しいディレクトリで次のコマンドを実行してインストールします。 npm install pino - Node.js アプリケーションで、ファイルの先頭に次のコード行を追加して Pino をインポートします。 インポート const pino = require('pino'); ピノを使う - ロガー インスタンスを作成して Pino を初期化します。次に例を示します。 初期化 const logger = pino({ level: 'info' }); このスクリプトは、コンソールに 以上のロギング レベルのログを生成します。 INFO レベルを info に設定すると、Pino は 、 、 、および のログ レベルでメッセージをログに記録します。 など、ロギング レベルが 未満のメッセージはログに記録されません。 INFO WARN ERROR FATAL DEBUG INFO このコードは、ログ レベルが INFO に設定された Pino ロガー インスタンスのみを作成します。ロガー インスタンスを使用して何かをログに記録するまで、ログ メッセージは生成または表示されません。例えば: logger.info('This is an info message'); これにより、コンソールに次の出力が生成されます。 {"level":30,"time":1624825088703,"msg":"This is an info message","pid":1234,"hostname":"my-machine"} コンソールに表示されるログ データには、ログ レベル、記録されたときのタイムスタンプ、ログに記録されているメッセージ、ログの識別子、およびホスト名が含まれます。 - インスタンスを使用して、アプリケーション内の他のメッセージをログに記録することもできます。例えば: ロギング logger logger.warn('This is a warning message'); logger.error('This is an error message'); - デフォルトでは、Pino はコンソールにログを記録します。出力を変更する場合は、ファイルへの書き込み、Sentry などのリモート サービスへのログの送信、Azure Application Insights の使用など、前述の Pino の利用可能なトランスポートのいずれかを使用できます。詳細については、Pino の「既知のトランスポート」セクションを参照してください。 出力 ピノプリティのインストール Pino の 基本 NDJSON フォーマッター機能は、Pino ログ用の優れたシンプルなフォーマッターであり、セットアップも簡単です。起動して実行する方法は次のとおりです。 pino-pretty - ターミナルで次のコマンドを実行して、Node.js プロジェクトに pino-pretty を依存関係としてインストールします。 ステップ 1 npm install pino-pretty - ファイルの先頭に次のコード行を追加して、Node.js アプリケーションに インポートします。 ステップ 2 pino-pretty const pino = require('pino'); const pinoPretty = require('pino-pretty'); const logger = pino({ level: 'info' }); logger.pipe(pinoPretty()); これら 2 つのコード スニペットを使用して、 インストールし、Pino ログをフォーマットするように設定しました。これで、ロガー インスタンスを使用してアプリケーションでメッセージをログに記録できるようになりました。ログは、人間が判読できるきれいな形式でコンソールに表示されます。 pino-pretty by で、Pino を使用したデバッグの詳細をご覧ください。 How to Debug Node.js with the Best Tools Available @RisingStack #2。ウィンストン ウィンストンのメリット GitHub で 20,000 を超えるスターを獲得した Winston は、Node.js の非常に人気のあるログ ライブラリです。 Winston は、その包括的な機能セットと使いやすさから、Node.js エコシステムにおける独自のロギング ライブラリです。ウィンストンが際立っている理由のいくつかは次のとおりです。 - Winston は高度なカスタマイズが可能で、コンソール、ファイル、リモート サーバーなどの複数の出力にログを書き込むことができるさまざまなログ オプションとトランスポート メカニズムを提供します。 柔軟性 - Winston はクエリ可能なログ アーカイブを提供し、ログの検索と分析を容易にします。 クエリ可能なログ - Winston には、Node.js アプリケーションへのログインを簡単に開始できるシンプルで使いやすい API があります。必要に応じて開発者がロギング機能を拡張およびカスタマイズできるようにしながら、コア機能の最小限のセットを提供します。 使いやすい いる - Winston には、その API に関する詳細な情報を提供する包括的な文書があり、開発者が迅速かつ簡単に開始できるように、多数の例とチュートリアルが含まれています。 十分に文書化されて - Winston は、大規模で活発な開発者コミュニティを持つオープンソース プロジェクトです。これにより、ライブラリが適切に管理され、バグがなく、最新のトレンドとテクノロジに対応できるように更新されます。 コミュニティ主導 ウィンストンのインストール Node.js プロジェクトに Winston をインストールするには、端末で次のコマンドを実行して npm パッケージ マネージャーを使用できます。 npm install winston ウィンストンの使用 インストールが完了したら、次の行を含めることで、Winston を Node.js コードにインポートして使用できます。 const winston = require('winston'); 次に、Winston ライブラリを使用して、ロギング インスタンスを構成および作成できます。次に例を示します。 const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console() ] }); これにより、情報レベルとコンソール トランスポートを使用してロガー インスタンスが作成されます。このロガー インスタンスを使用して、アプリケーションでメッセージをログに記録できます。次に例を示します。 logger.info('Hello World'); これにより、メッセージ 情報ログ レベルでコンソールに記録されます。 Hello World Winston のロギング レベル Winston には、RFC5424 ドキュメントで概説されているガイドラインに従って配置された 6 つのデフォルトのログ レベルが装備されています。レベルには数値の優先順位が割り当てられ、最も重大度が低い番号が割り当てられます。 6 つのレベルとそれぞれの優先順位の値は次のとおりです。 { error: 0, warn: 1, info: 2, http: 3, verbose: 4, debug: 5, silly: 6 } 6 つのログ レベルのそれぞれについて、ロガー オブジェクトに対応するメソッドがあります。 logger.error('error'); logger.warn('warn'); logger.info('info'); logger.verbose('verbose'); logger.debug('debug'); logger.silly('silly'); ログ レベルを表す文字列を log() メソッドに渡すこともできます。 logger.log('error', 'error message'); logger.log('info', 'info message'); の プロパティは、構成したトランスポートに渡されるログ メッセージを指定します。たとえば、 プロパティが に設定されている場合、重大度が 以上のログ エントリのみが書き込まれ、その他すべてのエントリの優先度が低くなります。これは、現在の構成では、 、 、および のレベルのログ メッセージのみが出力されることを意味します。 logger level level info info info warn error #3。バニヤン バニヤンのメリット Bunyan は、ログ データをより構造化して読みやすくすることに重点を置いているため、Node.js のユニークなログ ライブラリです (ログをプレーン テキストではなく JSON オブジェクトとしてシリアル化することでこれを実現しています)。 Bunyan が Github で 7,000 スターを獲得した理由は次のとおりです。 - 他のログ ライブラリとは異なり、Bunyan はデータを JSON 形式でログに記録するため、解析や他のツールやプラットフォームとの統合が容易になります。 JSON 形式 - Bunyan は、ログの重大度レベルとしきい値を管理するための柔軟なオプションを備えた複数のログ レベルをサポートしています。 柔軟なログ レベル - Bunyan にはシリアライゼーションと呼ばれる機能があり、関数が JavaScript オブジェクトを JSON で表現可能なオブジェクトに変換します。これにより、特定のロガー インスタンスが、ログ レコード フィールド名をシリアル化関数にリンクするシリアライザーを持つことができます。 シリアライゼーション - Bunyan は、ロギング用のシンプルで使いやすい API を提供し、あらゆるスキル レベルの開発者がアクセスできるようにします。 使いやすい API - Bunyan は、コンソール、ファイル、HTTP、電子メールなどのさまざまなプラグインとトランスポートをサポートしているため、特定のニーズや要件を満たすためにログ出力を簡単にカスタマイズできます。 プラグインとトランスポート バニヤンのインストール Bunyan をインストールするには、ターミナルまたはコマンド プロンプトで次のコマンドを実行します。 npm install bunyan これにより、Bunyan ライブラリとその依存関係が Node.js プロジェクトにインストールされます。インストールしたら、コードでライブラリを要求して使用を開始できます。 バニヤンを使う 。JavaScript ファイルの先頭に、次の行を追加します。 Bunyan をプロジェクトにインポートします const bunyan = require('bunyan'); - 次に、次のコードを使用してロガー インスタンスを作成します。 ロガー インスタンスを作成する const logger = bunyan.createLogger({ name: 'my-app-name', level: 'info' }); この例では、 はアプリケーションの名前であり、level は表示するログの最小レベルを指定します。 name - メッセージをログに記録するには、info、warn、error などの Bunyan のログ メソッドのいずれかを呼び出し、ログに記録するメッセージを次のように渡します。 メッセージをログに記録する logger.info('This is an info log message'); logger.warn('This is a warn log message'); logger.error('This is an error log message'); 。最後に、コードを実行すると、ログに記録されたメッセージがコンソールに表示されます。 コードを実行します デフォルトでは、Bunyan は JSON 形式でログを出力するため、ログ管理ツールを使用してログを簡単に解析および分析できます。 Bunyan のストリーム オプションを使用してフォーマットをカスタマイズすることもできます。 #4。モーガン モーガンのメリット Morgan は、主にミドルウェアとしての独自の位置付けなど、いくつかの理由から Node.js の独自のロギング ライブラリです。これは他の理由の中でも非常に人気があり、この記事の執筆時点で GitHub には 7.3K のスターがありました。モーガンが人気の理由は次のとおりです。 - Morgan は Node.js Express フレームワークでミドルウェアとして動作するため、既存の Express ベースのアプリケーションに簡単に統合できます。 ミドルウェア ベース - Morgan は、ログ形式からカスタム トークンまで幅広いカスタマイズ オプションを提供し、開発者が特定のニーズに合わせてログを調整できるようにします。 カスタマイズ可能 - Morgan は、コンソール、ファイル、またはリモート サーバーなど、さまざまな出力ストリームにログ データを書き込むことができます。 ストリームベース - Morgan は高速かつ軽量になるように設計されているため、パフォーマンスが重要なトラフィックの多いアプリケーションに適しています。 高速かつ軽量 - Morgan は、HTTP リクエストとレスポンスをログに記録するように特別に設計されています。これは、Web サーバーのパフォーマンスのデバッグと分析に役立ちます。 HTTP リクエスト ロギング モーガンのインストール npm を使用して morgan パッケージをインストールすることから始めます。 npm install morgan モーガンの使用 インストール プロセスが完了したら、"require" 関数を使用してライブラリをインポートし、それをミドルウェアとして Express.js アプリケーションに統合する必要があります。 このコードは次のようになります。 var morgan = require('morgan'); app.use(morgan('dev')); 「dev」引数は、Morgan が提供するフォーマット オプションです。 Morgan は、次の 5 つの異なるログ形式を提供しています。 出力はごくわずかです。 tiny には応答時間が含まれ、デフォルトでログが省略されます。 short 開発中に使用するための簡潔で色分けされた出力を提供します dev は、Apache 結合ログ出力も使用します。 common 標準化された Apache 結合ログ出力を利用します。 combined 以下に示すように、Morgan をアプリケーションに統合するときに適切な引数を使用して、これらの形式から選択できます。 app.use(morgan('combined')); app.use(morgan('common')); app.use(morgan('dev')); app.use(morgan('short')); app.use(morgan('tiny')); #5。ログレベル ログレベルの利点 Loglevel は、Github で 2.4K のスターがあり、ここにリストされている他のオプションのいくつかよりも少し人気がありませんが、それでも優れた軽量のログ ライブラリです。 loglevel が Node.js の独自のロギング ライブラリである理由をいくつか次に示します。 - loglevel は非常に軽量なライブラリであり、最小限のコード オーバーヘッドが必要な状況に最適です。 最小限のコード フットプリント - loglevel は動的ログ レベルを提供します。これにより、実行時にログ レベルを変更できるため、コードを変更することなく、さまざまなレベルのログ詳細を簡単に切り替えることができます。 動的ログ レベル - loglevel の API はシンプルで、メッセージを記録するための使いやすく柔軟な方法を提供します。 シンプルな API - loglevel は Node.js と Web ブラウザーの両方と互換性があるため、さまざまな環境でログを記録するための多目的な選択肢になります。 ブラウザーの互換性 - loglevel は、広く使用されているロギング ライブラリである log4js の上に構築されており、異なるプラットフォーム間での互換性を保証します。 クロスプラットフォームの互換性 ログレベルのインストール ログレベルを設定するには、最初に npm を使用してインストールする必要があります。 npm install loglevel ログレベルの使用 インストールしたら、Node.js プロジェクトにインポートし、ログ レベルを設定して使用を開始できます。 const log = require('loglevel'); log.setLevel(log.levels.ERROR); ログ レベルを 重大度レベルが のログ メッセージのみがログに記録されるように指定されます。ログ レベルを設定したら、次の方法を使用して、さまざまなレベルでメッセージをログに記録できます。 ERROR, ERROR log.trace('This is a trace message'); log.debug('This is a debug message'); log.info('This is an info message'); log.warn('This is a warning message'); log.error('This is an error message'); 設定したログ レベルによって、ログに記録されるメッセージと無視されるメッセージが決まります。たとえば、ログ レベルが info に設定されている場合、 および log.warn または log.error を使用してログに記録されたメッセージのみが表示されます。 log.info #6。 Log4js Log4js の利点 もちろん、兄弟である Log4js を挙げずに loglevel について言及することはできません。 Log4js は、人気のある Java ロギング ライブラリ Log4j のポートとして開始された JavaScript ロギング ライブラリです。 JavaScript アプリケーションに同様のログ ソリューションを提供するために作成され、その後、高度なログ機能と機能を提供するように進化しました。 Github で 5.6k を超えるスターがあり、Log4js が非常に人気がある理由のいくつかを以下に示します。 - Log4js は、ログ レベル、さまざまな種類のアペンダー (コンソール、ファイル、ネットワークなど)、アプリケーションのさまざまな部分にさまざまなログ構成を指定する機能など、さまざまなロギング オプションを提供します。 構成の柔軟性 - Log4js はカスタム アペンダーの作成をサポートしているため、開発者はライブラリを拡張して特定のログ要件を満たすことができます。 カスタム アペンダー - Log4js を使用すると、開発者はログ メッセージをユーザーのリクエスト データなどの追加のコンテキスト情報と関連付けて、ログ メッセージをデバッグに役立つものにすることができます。 ログ コンテキストのサポート - Log4js は実行時のログ レベルの変更をサポートしているため、運用環境でのログの管理が容易になります。 動的なログ レベルの構成 - Log4js には、Logstash や Graylog などの一般的なツールのサポートが組み込まれているため、ロギングをより広範なアプリケーションの監視および分析ワークフローに簡単に統合できます。 他のツールとの統合 Log4js のインストール Log4js をインストールするには、端末で次のコマンドを実行して npm パッケージ マネージャーを使用できます。 npm install log4js これにより、最新バージョンの Log4js とその依存関係がインストールされます。次に、Node.js アプリケーションでライブラリを要求し、それを使用してメッセージをログに記録できます。 Log4js の使用 Log4js の使用を開始するには、まずコードでそれを必要とし、構成します。 const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'console' } }, categories: { default: { appenders: ['console'], level: 'info' } } }); const logger = log4js.getLogger(); その後、ロガーを使用して、さまざまなレベルでメッセージをログに記録できます。 logger.trace('Entering cheese testing'); logger.debug('Got cheese.'); logger.info('Cheese is Gouda.'); logger.warn('Cheese is quite smelly.'); logger.error('Cheese is too ripe!'); logger.fatal('Cheese was breeding ground for listeria.'); Log4js を使用して、異なるログ レベルで複数のアペンダー (コンソールとファイル) にメッセージを記録する例を次に示します。 const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'console' }, file: { type: 'file', filename: 'app.log' } }, categories: { default: { appenders: ['console'], level: 'info' }, file: { appenders: ['file'], level: 'error' } } }); const logger = log4js.getLogger(); const fileLogger = log4js.getLogger('file'); logger.info('This is an informational message'); fileLogger.error('This is an error message'); この例では、カテゴリ「デフォルト」のロガーは、レベル情報以上のメッセージをコンソールに記録するように構成されています。カテゴリが「ファイル」のロガーは、エラーレベル以上のメッセージをファイルに記録するように構成されています。 2 つのロガーは、メッセージをそれぞれのアペンダーに記録するために、同じ意味で使用できます。 #7。 Npmlog Npmlog のメリット npmlog の独自の価値は、そのシンプルさと最小限のオーバーヘッドにあり、小規模またはパフォーマンス重視のプロジェクトでの使用に適しています。構成が簡単で、npm エコシステムとシームレスに統合できるため (npm の公式ロガー ユーティリティであるため驚くことではありません)、軽量のログ ソリューションを探している開発者に人気があります。 npmlog がリストを作成した理由は次のとおりです。 - npmlog はコードベースが小さく、オーバーヘッドが最小限であるため、小規模またはパフォーマンス重視のプロジェクトに適しています。 軽量 - npmlog は、npm エコシステム内で使用するために特別に設計されており、他の npm パッケージやツールと簡単に統合できます。 npm との簡単な統合 - npmlog を使用すると、ログ レベル、ストリーム、プレフィックスをカスタマイズできるため、ログの生成方法と表示方法を完全に制御できます。 カスタマイズ可能 - npmlog は、小さなスクリプトから大規模なアプリケーションまで、幅広いプロジェクトに適しており、用途が広く柔軟なロギング ツールです。 汎用性 な API があり、必要なセットアップは最小限であるため、Node.js プロジェクトへのログインをすばやく簡単に開始できます。 使いやすい - npmlog には簡単 Npmlog のインストール npmlog をインストールするには、マシンに Node.js と npm (Node Package Manager) がインストールされている必要があります。その後、ターミナルまたはコマンド プロンプトで次のコマンドを実行できます。 npm install npmlog これにより、最新バージョンの npmlog とその依存関係がダウンロードされてインストールされ、Node.js プロジェクトで使用できるようになります。 Npmlog の使用 Node.js プロジェクトで npmlog を使用する方法の例を次に示します。 const log = require('npmlog'); log.level = 'verbose'; log.verbose('This is a verbose message'); log.info('This is an informational message'); log.warn('This is a warning'); log.error('This is an error'); この例では、 モジュールを要求し、それを変数に割り当てることから始めます。次に、ログ レベルを に設定します。これは、ログ レベルが 、 、 、および のメッセージが表示されることを意味します。次に、 、 、 、および メソッドを使用して、さまざまなレベルでメッセージをログに記録します。 npmlog verbose verbose info warn error verbose info warn error デフォルトでは、npmlog は に書き込みます。 に書き込む必要がある場合は、 プロパティを使用できます。 process.stderr process.stdout log.stream #8。轟音 咆哮の利点 roarr ライブラリは、初期化を必要とせずに構造化データを生成するように設計された Node.js ロギング ツールです。コマンドライン インターフェイス (CLI) を備えており、環境変数をサポートしているため、用途が広く使いやすいです。さらに、roarr は Node.js とブラウザー環境の両方と互換性があるため、幅広いアプリケーションに対応する多用途のログ ソリューションになります。 以下に、roarr ライブラリの独自の価値を際立たせる重要なポイントをいくつか示します。 - ライブラリは構造化された形式でログを生成し、機械可読ツールを使用してログを簡単に処理および分析できるようにします。 構造化ログ - roarr は、問題を診断し、ログの全体的な品質を向上させるために使用できる、要求と応答の情報などの豊富なメタデータ セットを提供します。 豊富なメタデータ - 構造化された形式にもかかわらず、roarr ログは人間が読めるように設計されているため、ログのコンテキストと内容を簡単に理解できます。 人間が読める - このライブラリは、ロギング用のシンプルで直感的な API を提供し、不要な複雑さはありません。 使いやすい - roarr ライブラリを使用すると、ログ レベル、ストリーム、およびメタデータをカスタマイズするためのオプションを含め、ログの外観と内容をカスタマイズできます。 カスタマイズ可能 Roarrのインストール まず、npm を使用して roarr をインストールします。 npm install roarr 咆哮を使う 次に、roarr をコードにインポートしてロガーを作成します。 const Roarr = require('roarr').default; const logger = new Roarr({ context: { service: 'my-service' } }); メソッドを使用してメッセージをログに記録します。 log logger.info('Hello, world!'); デフォルトでは、roarr ログはコンソールに出力されます。 オプションを使用して、ファイルなどの別のストリームを指定することで、ログ出力をカスタマイズできます。 stream const Roarr = require('roarr').default; const fs = require('fs'); const logger = new Roarr({ context: { service: 'my-service' }, stream: fs.createWriteStream('./my-service.log') }); これは、roarr の使用方法の基本的な例にすぎません。利用可能なオプションや機能は他にもたくさんあります。詳細については、roarr の公式ドキュメントを参照してください。 #9。トレーサー トレーサーの利点 Tracer は、Node.js コミュニティによって開発された、Node.js アプリケーション用のオープンソース ロギング ライブラリです。 Node.js アプリケーションでメッセージとデバッグ情報を記録するための効率的かつ柔軟な方法を提供するように設計されています。 Tracer は、ボランティアのチームによって積極的に維持および開発されており、Github で誰でも使用および貢献できます。これを独自のログ ライブラリにする機能の一部を次に示します。 - Tracer は非同期ロギングを使用します。これは、ログがプログラムの実行をブロックしないことを意味します。 非同期ロギング - Tracer は構造化ログを提供します。つまり、ログはキーと値のペアに編成され、ログ データの検索、分析、視覚化が容易になります。 構造化ログ - Tracer はカスタマイズ可能な出力形式を提供し、開発者がコンソール、ファイル、または AWS CloudWatch などのクラウドベースのサービスを含む、ログの形式と宛先を選択できるようにします。 カスタマイズ可能な出力 - Tracer は、リクエスト ID、ユーザー ID、その他の情報などのメタデータをログに添付する機能を含む、リッチ ロギング コンテキストを提供します。 リッチ ロギング コンテキスト - Tracer はミドルウェア サポートを提供し、開発者が Express.js または Koa.js アプリケーションに簡単にロギングを追加できるようにします。 ミドルウェア サポート トレーサーのインストール Tracer は Node Package Manager (npm) を使用してインストールできます。トレーサーをインストールする手順は次のとおりです。 ターミナルまたはコマンド プロンプトを開きます 現在のディレクトリを Node.js プロジェクト ディレクトリに変更します。 次のコマンドを実行して Tracer をインストールします。 npm install tracer これにより、プロジェクトに依存関係として Tracer がインストールされます。その後、コードでそれを要求し、それを使用してメッセージをログに記録することができます。 トレーサーの使用 コードで Tracer を使用する方法の例を次に示します。 const tracer = require('tracer'); const logger = tracer.console(); logger.info('Starting the application...'); この例では、最初に Tracer ライブラリを必要とし、次に メソッドを使用してコンソール ロガーを作成します。最後に、ロガー オブジェクトの メソッドを使用して、情報メッセージをログに記録します。 tracer.console() info Tracer を使用する別の例を次に示します。 const tracer = require('tracer'); const logger = tracer.dailyfile({root: './logs', maxLogFiles: 10}); logger.error('An error has occurred:', new Error('Something went wrong')); この例では、 メソッドを使用して、日ごとのローテーション ファイルにログを書き込むファイル ロガーを作成しています。 オプションはログ ファイルが保存されるディレクトリを指定し、 オプションは保持されるログ ファイルの数を制限します。 tracer.dailyfile root maxLogFiles 最後に、ロガー オブジェクトの メソッドを使用してエラー メッセージをエラー オブジェクトと共にログに記録し、発生したエラーに関する詳細情報を提供します。 error #10。シグナル シグナルのメリット その Github ページは、「ハッキング可能で、コアまで構成可能」であることを誇っています。これが、Signale が Node.js コミュニティでこれほど愛されているロギング ライブラリである理由の主要な部分です。このライブラリは、Node.js アプリケーションでメッセージをログに記録しようとするときに開発者が直面する問題 (ログが雑然として読みにくいなど) の解決策として作成されました。パックから際立っている理由は次のとおりです。 - Signale はさまざまなカスタマイズ可能なログ出力を提供し、開発者が単純なコンソール出力から JSON や Logfmt などのより高度な出力まで、ニーズに最適な出力を選択できるようにします。 カスタマイズ可能なログ出力 - Signale にはシンプルで直感的な API があり、開発者はロギングに慣れていない人でも簡単に使用および理解できます。 直感的な API - Signale はスタイル付き出力を提供し、ログをより読みやすく視覚的に魅力的にし、重要なログ メッセージをすばやく簡単に識別できるようにします。 スタイル付き出力 - Signale は、タイムスタンプやログ レベルなどの豊富なログ コンテキストを提供し、ログの分析と理解を容易にします。 豊富なログ コンテキスト - Signale には、開発者と貢献者の大規模でアクティブなコミュニティがあり、ライブラリが適切に維持され、最新のテクノロジとベスト プラクティスで最新であることを保証します。 アクティブなコミュニティ シグナルのインストール Signale をインストールするには、ターミナルで次のコマンドを実行して、Node.js パッケージ マネージャーである npm を使用できます。 npm install signale または、端末で次のコマンドを実行して、yarn を使用して Signale をインストールすることもできます。 yarn add signale インストールしたら、Signale を Node.js アプリケーションにインポートし、それを使用してメッセージとデバッグ情報をログに記録できます。 シグナルの使用 Signale を Node.js アプリケーションにインポートし、それを使用してメッセージをログに記録する例を次に示します。 const signale = require('signale'); // Log an info message signale.info('Starting up the server'); // Log a success message signale.success('Server started successfully'); // Log a warning message signale.warn('Low memory warning'); // Log an error message signale.error(new Error('An error occurred while processing data')); この例では、 関数を使用して Signale を Node.js アプリケーションにインポートします。次に、Signale が提供する 、 、 、 のさまざまなログ メソッドを使用して、さまざまな種類のメッセージをログに記録します。これらの方法にはそれぞれ特徴的な記号と色があり、ログ メッセージの種類を簡単に識別できます。 require info success warn error 追加のロギング方法やカスタマイズ オプションなど、Signale の使用方法の詳細については、 参照してください。 Signale のドキュメント を Node.js ログ ライブラリを使用してデバッグ プロセスを最適化する Node.js アプリケーションをデバッグするための迅速で効率的な方法をお探しですか?この記事で言及されている 1 つまたは複数のライブラリを確認してください。それぞれが優れたオプションです。ただし、Pino は、その価値があるため、私たちの個人的なログ ライブラリを選択しています 😉 これらのログ ライブラリは、テスト/開発環境と本番環境の両方で Node.js アプリケーションをデバッグする際に重要であることが証明されています。 さらに、それらを PlayerZero のような監視ソリューションと統合することで、Node.js アプリケーションのパフォーマンスについてさらに深い洞察を得ることができます。 デモを予約して、PlayerZero がバックエンド アプリケーションのパフォーマンスを最適化するのにどのように役立つかを今すぐ学びましょう! にも掲載されています。 ここ