Node.jsログ

Node.jsは、JavaScriptランタイム環境のオープンソースです。ロギングはNode.jsアプリケーションアプリケーションライフサイクルを把握するのに役立ちます。
winston、Bunyan、Morganといったロギングフレームワークを使用して、Node.jsアプリケーションからログを収集し、Site24x7アプリケーションログに送信します。

目次

winstonの使用

Node.jsのロギングフレームワークとして、winstonがあり、コンソール、ファイル、APIといった複数の転送に対応しており、ログをSite24x7に送信します。

次の手順で、winstonを使用して、情報をファイルにロギングします。

  1. Node.jsとNode Package Manager(NPM)の最新バージョンをマシンにインストールしてください。次のコマンドでwinstonをインストールできます。
    $ npm install winston
  2. 次のコードで、winstonモジュールでデフォルトで利用できるロガーを拒否できます。
    const { createLogger, format, transports } = require('winston');
    const logger = createLogger({
    level: 'info',
    exitOnError: false,
    format: format.json(),
    transports: [
    new transports.File({ filename: `<application_dir>/logs/<FILE_NAME>.log` }),
    ],
    });
    module.exports = logger;
    logger.log('info', 'Hello World!');
    上記コードスニペットにファイル名を入力してください。
  3. ロギングを確認するため、ログファイル内に次のサンプルログが作成されているかを確認してください。
    {"level":"info","message":"Hello World!","timestamp":"2022-05-15T14:52:05.337Z"}

ログ管理の設定方法

  1. Site24x7にログインします。
  2. サーバー監視エージェント(Windows | Linux)のダウンロードとインストールを行います。
  3. 管理 > アプリケーションログ > ログプロファイル > ログプロファイルの追加をクリックします。
    • プロファイル名:ログプロファイル名を入力します。
    • ログタイプの選択:ドロップダウンからNode JSを選択します。
    • ログソース:ドロップダウンからローカルファイルを選択します。
    • ログ検索のファイルリスト:winstonがファイルを転送するファイルパスを追加します。
      例:<application_dir>/logs/<FILE_NAME>.log
  4. サーバーを選択して、保存をクリックします。

ログパターンとサンプルログ

複数ログパターンを使用して、ログにマッチするログパターンを追加します。Node.jsログで適用されるサンプルログとログパターンは次のとおりです。

Morgan access
ログパターン

$RemoteAddress$ - $RemoteUser$ [$DateTime:date$] "$Method$ $RequestURI$ $Protocol$" $Status:number$ $BytesSent:number$ "$Referer$" "$UserAgent$"

サンプルログ
127.0.0.1 - - [18/Jul/2017:23:59:18 +0530] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"

Morgan
ログパターン

$DateTime:date:agent_time$ $Method$ $URL$ $StatusCode$ $BytesWritten:number$ - $Duration:decimal$ ms

サンプルログ
GET www.zylker.com 304 5000 - 2.306 ms

winston
ログパターン

json $timestamp as DateTime:date:MMM-dd-yyyy HH:mm:ss$ $level as LogLevel$ $message as Message$

サンプルログ
{"message": "Events Error: Unauthenticated user","level": "error","timestamp": "Jul-10-2022 02:02:14"}

winston trace
ログパターン

$LogLevel$: $DateTime:date:MMM-dd-yyyy HH:mm:ss$: ![ trace_id = $TraceID$ ] [ span_id = $SpanID$ ]! $Message$

サンプルログ
info: Sep-30-2022 17:55:57: [ trace_id = 0063aecb17fa8ab3e43fac86b3d9f625 ] [ span_id = bd69b156bdc9443e ] Server Sent A Hello World!: undefined

log4js
ログパターン

[$DateTime:date:yyyy-MM-dd'T'HH:mm:ss.SSS$] [$LogLevel$] $ThreadNamet$ - $Message$

サンプルログ
[2019-10-21T15:13:23.419] [INFO] default - An info message

ダッシュボード

Node.jsログダッシュボードで使用できるウィジェットは次のとおりです。

  • リクエストトレンド
  • トップ10クライアントIP
  • 受信バイトレート
  • トップ20 失敗リクエスト
  • ステータスコード統計
  • ユーザーエージェント統計
  • HTTPメソッド
  • ロギングレベル
  • 例外

関連ログタイプ