3.2. デバッグロギング
デバッグロギングは、デバッグ時に詳細な情報をアプリケーションログに追加する方法です。これにより、以下が可能になります。
- アプリケーションの通常の操作中のロギングの出力を最小限に抑えて、読みやすさを改善し、ディスク領域の使用量を削減します。
- 問題の解決時にアプリケーションの内部作業に関する詳細情報を表示します。
3.2.1. デバッグロギングの追加
この例では、デバッグパッケージ を使用しますが、デバッグロギングを処理できる その他のパッケージも利用可能です。
前提条件
- デバッグするアプリケーションがある。
手順
debug
ロギング定義を追加します。const debug = require('debug')('myexample');
デバッグステートメントを追加します。
app.use('/api/greeting', (request, response) => { const name = request.query ? request.query.name : undefined; //log name in debugging debug('name: '+name); response.send({content: `Hello, ${name || 'World'}`}); });
デバッグ モジュールを
package.json
に追加します。... "dependencies": { "debug": "^3.1.0" }
アプリケーションによっては、このモジュールはすでに含まれている場合があります。たとえば、express generator を使用してアプリケーションを作成する場合、
debug
モジュールはすでにpackage.json
に追加されています。アプリケーションの依存関係をインストールします。
$ npm install
3.2.2. localhost でのデバッグログへのアクセス
アプリケーションを起動し、デバッグロギングを有効にする場合は、DEBUG
環境変数を使用します。
前提条件
- デバッグロギングを使用するアプリケーション。
手順
アプリケーションを起動し、デバッグロギングを有効にする場合は、
DEBUG
環境変数を設定します。$ DEBUG=myexample npm start
debug
モジュールでは、ワイルドカード を使用してデバッグメッセージをフィルターできます。これはDEBUG
環境変数を使用して設定されます。アプリケーションをテストしてデバッグロギングを呼び出します。
たとえば、次のコマンドは、
/api/greeting
メソッドでname
変数をログに記録するようにデバッグログが設定されている REST API レベル 0 アプリケーションの例に基づいています。$ curl http://localhost:8080/api/greeting?name=Sarah
アプリケーションログを表示して、デバッグメッセージを表示します。
myexample name: Sarah +3m
3.2.3. OpenShift での Node.js デバッグログへのアクセス
OpenShift のアプリケーション Pod で DEBUG
環境変数を使用して、デバッグロギングを有効にします。
前提条件
- デバッグロギングを使用するアプリケーション。
-
CLI クライアント
oc
がインストールされている。
手順
oc
CLI クライアントを使用して、OpenShift インスタンスにログインします。$ oc login ...
アプリケーションを OpenShift にデプロイします。
$ npm run openshift
これにより、
openshift
npm スクリプトを実行します。これは nodeshift への直接呼び出しをラップします。Pod の名前を見つけ、ログを追跡して起動を監視します。
$ oc get pods .... $ oc logs -f pod/POD_NAME
重要Pod が起動したら、このコマンドを実行したままにして、新しいのターミナルウィンドウで残りの手順を実行します。これにより、ログを 追跡 でき、そのログの新しいエントリーを確認することができます。
アプリケーションをテストします。
たとえば、次のコマンドは、
/api/greeting
メソッドでname
変数をログに記録するようにデバッグログが設定されている REST API レベル 0 アプリケーションの例に基づいています。$ oc get routes ... $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
- Pod ログに戻り、ログにデバッグロギングメッセージがないことに注意してください。
DEBUG
環境変数を設定して、デバッグロギングを有効にします。$ oc get dc ... $ oc set env dc DC_NAME DEBUG=myexample
Pod ログに戻り、更新ロールアウトを監視します。
更新がロールアウトされると Pod が停止し、ログをフォローしなくなります。
新規 Pod の名前を見つけ、ログを追跡します。
$ oc get pods .... $ oc logs -f pod/POD_NAME
重要Pod が起動したら、このコマンドを実行したままにして、別のターミナルウィンドウで残りの手順を実行します。これにより、ログを 追跡 でき、そのログの新しいエントリーを確認することができます。具体的には、ログにはデバッグメッセージが表示されます。
アプリケーションをテストして、デバッグロギングを呼び出します。
$ oc get routes ... $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
Pod ログに戻り、デバッグメッセージを表示します。
... myexample name: Sarah +3m
デバッグロギングを無効にするには、Pod から DEBUG
環境変数を削除します。
$ oc set env dc DC_NAME DEBUG-
関連情報
環境変数の詳細は、OpenShift のドキュメント を参照してください。