0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(Node.js) morganモジュールを理解する

Posted at

はじめに

node.jsのコードの中でmorganモジュールを使用する機会があったので、どのようなモジュールであるのか簡単にまとめたいと思います。

morganモジュールとは

Node.jsアプリケーションで使用されるHTTPリクエスト(レスポンスではなく!)のロギングミドルウェアです。ExpressなどのWebフレームワークと組み合わせて使うことが一般的で、アプリケーションに送られてくるリクエスト情報(メソッド、ステータスコード、URL、レスポンスタイム(厳密にはリクエストに対するサーバーの応答時間を指すがこの情報も含む事ができる)など)を簡単にログとして記録することができます。

主な特徴

・HTTPリクエストのログ
サーバーに送られるすべてのHTTPリクエストをログに残します。リクエストの情報を記録することで、アプリケーションの動作確認やデバッグに役立ちます。

・プリセットのログフォーマット
Morganは、combined、common、dev、short、tinyといったプリセットフォーマットが用意されており、すぐに使用できます。

・カスタムフォーマット
必要に応じて、カスタムログフォーマットを設定することも可能です。

使用方法

基本的には、

morgan(format, options)

という形で記載します。

format

リクエストのログフォーマットを簡単に設定できるPredefined Formats(事前定義されたフォーマット)が用意されています。tiny、 devなどです。それぞれの特徴は、以下です。

tiny: 最もシンプルなフォーマット
HTTPメソッド、URL、HTTPステータスコード、レスポンスサイズ、レスポンスタイム
例:スクリーンショット 2024-10-02 13.56.42.png

dev: 開発中に使うためのフォーマットで、カラーリングされたシンプルなログ出力
HTTPメソッド、URL、HTTPステータスコード、レスポンスタイム、レスポンスサイズ
例:スクリーンショット 2024-10-02 13.58.43.png

options

オプションではstreamというものがあり、ログにストリームをアウトプットします。出力先はデフォルトでは、process.stdoutです。今回のサンプルコードの書き方がストリームとして本当に正しいのかは分かりませんが、動きはしました。

サンプルコード

morgan.js
const express = require('express');
const morgan = require('morgan');
const app = express();

const loggerStream = {
  write: message => console.log(`From loggerStream: ${message}`),
};

app.use(morgan('tiny', { stream: loggerStream }));

app.get('/', (req, res) => {
  res.status(200).send('Hello from the server side!');
});

app.listen(3000, () => {
  console.log(`App running on port 3000...`);
});

コードの解説

const loggerStream = {
  write: message => console.log(`From loggerStream: ${message}`),
};

writeメソッドを定義し、morganが生成するログを受け取って、カスタムメッセージを加えつつconsole.logで出力します。messageは、morganから渡されるログメッセージを表示します。

app.use(morgan('tiny', { stream: loggerStream }));

morganのログ出力先を標準出力ではなく、カスタムで定義したloggerStreamに変更します。

app.get('/', (req, res) => {
  res.status(200).send('Hello from the server side!');
});

GETリクエストが/(ルートパス)に送られたときに実行される関数を定義しています。クライアントにステータスコード200で「Hello from the server side!」というメッセージをレスポンスとして送ります。この記述はmorganモジュールとは関係ありません。

app.listen(3000, () => {
  console.log(`App running on port 3000...`);
});

サーバーをポート3000で起動し、アクセス可能な状態にします。ポート3000がサーバーの接続口です。コールバック関数でサーバーが起動したことを示すメッセージ「App running on port 3000…」がコンソールに出力されます。

実行結果

スクリーンショット 2024-10-02 14.24.22.png

node morgan.jsを実行した際に、「App running on port 3000...」が出力されます。
その後、「http://127.0.0.1:3000/」にアクセス(リクエストを送る)した際に、「From loggerStream: GET / 200 27 - 2.455 ms」が表示されます。

まとめ

node.jsのmorganモジュールの使用方法についてまとめました。

Reference

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?