すべてのプロダクト
Search
ドキュメントセンター

Function Compute:ログ

最終更新日:Aug 28, 2024

Node.jsランタイムでログを印刷および表示できます。 印刷されたログを使用して問題をすばやく特定したり、分析して機能実行プロセスや期間などの機能実行情報を取得したりできます。 これにより、システムの信頼性と安定性が向上します。

ログの印刷

関数によって標準出力 (stdout) に出力されたログは、Simple Log Serviceの指定されたLogstoreに保存されます。 次のいずれかの方法を使用して、ログをstdoutに印刷できます。 次のサンプルコードに例を示します。

ECMAScriptモジュール

説明
  • この例では、Node.js 18以降のみをサポートします。

  • サンプルコードはワンクリック展開をサポートしています。 サンプルコードは、ワンクリックでFunction Computeにデプロイできます。 nodejs-fc-log-es

export const handler = async (event, context) => {
  process.stdout.write('hi,fc\n');
  console.log('hello,world');
  context.logger.info('hello,fc');
  return "Hello World!";
};

CommonJSモジュール

'use strict';

exports.handler = (event, context, callback) => {
  process.stdout.write('hi,fc\n');
  console.log('hello,world');
  context.logger.info('hello,fc');
  callback(null, 'hello,world');
};

process.stdout.writeを使用してログを印刷

この方法を使用してログを印刷すると、ログの内容がそのまま印刷されます。 サンプルログ:

hi,fc

console.logを使用してログを印刷

この方法を使用してログを印刷する場合、各ログには時間、リクエストID、ログレベルなどの情報が含まれます。 サンプルログ:

2024-03-04 07:01:16.927 1-65e571bc-158a59e8-b63f98cd471c [info] hello,world

context.loggerを使用してログを印刷

関数のインスタンス同時実行性を1より大きい値に設定すると、1つの関数インスタンスが複数のリクエストを同時に処理します。 この場合、context.loggerを使用してログを印刷し、リクエストIDで各同時リクエストのログを区別することを推奨します。 サンプルログ:

2024-03-04 07:01:16.927 1-65e571bc-158a59e8-b63f98cd471c [[object Object]] hello,fc

カスタムログ重大度レベル

重要

カスタムログの重大度レベルは、Nodejs18およびNodejs20ランタイムでのみサポートされます。

ALIYUN_FC_LOG_LEVEL環境変数を使用して、ログの重大度レベルをカスタマイズできます。 カスタムログレベルは、最小から最大の重大度まで、debug、info、warn、およびerrorで、debugが最小、errorが最大です。

重大度レベルがALIYUN_FC_LOG_LEVEL以上のログのみが出力されます。

たとえば、ALIYUN_FC_LOG_LEVEL=warnを設定した場合、ログレベルがwarn以上のログのみが出力されます。 デフォルトでは、console.logによって出力されるログのレベルはinfoで、warnレベルよりも低くなっています。 この場合、infoレベルのログは印刷されません。 process.stdout.write() を使用して印刷されたログは、この環境変数の影響を受けません。

手順

  1. テスト用のコードディレクトリを作成します。たとえば、mycodeです。

  2. codeディレクトリにindex.jsコードファイルを作成し、次のサンプルコードをindex.jsに保存します。

    'use strict';
    
    exports.handler = (event, context, callback) => {
      process.stdout.write('stdout log\n');
      console.log('console log');
      context.logger.debug('context log info');
      context.logger.info('context log info');
      context.logger.warn('context log warn');
      context.logger.error('context log error');
      callback(null, 'hello,world');
    }
  3. Function Computeコンソールにログインします。 [イベント関数] を選択して関数を作成します。 ランタイムとしてNode.js 18またはNode.js 20を選択し、コードアップロードメソッドとしてUpload Folderを選択します。 詳細については、「イベント関数の作成」をご参照ください。

  4. 機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[環境変数] をクリックします。 [環境変数] セクションで、[変更] をクリックします。

  5. ALIYUN_FC_LOG_LEVEL=warnを設定した場合、[テスト機能] をクリックすると次のログが出力されます。

stdout log
2024-06-19 08:48:51.672 1--xxx-xxx-xxx [warn] context log warn
2024-06-19 08:48:51.672 1--xxx-xxx-xxx [error] context log error

ログの表示

関数の実行後、[ログ] タブでログを表示できます。 詳細については、「関数呼び出しログの表示」をご参照ください。