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,fcConsole.log を使用してログを印刷する
このメソッドを使用してログを印刷すると、各ログには時間、リクエスト ID、ログレベルなどの情報が含まれます。サンプルログ:
2024-03-04 07:01:16.927 1-65e571bc-158a59e8-b63f98cd471c [info] hello,worldContext.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 以上のログ (warn および error ログ) のみが印刷されます。console.log を使用して印刷されるログのデフォルトレベルは info です。info レベルは設定された warn レベルよりも低いため、info ログは印刷されません。process.stdout.write() を使用して印刷されたログは、この環境変数の影響を受けず、常に印刷されます。
手順
テスト用のコードディレクトリ (例:
code) を作成します。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'); }Function Compute コンソールの 関数を作成ページ で、関数タイプを [イベント関数] に設定し、[ランタイム] を Node.js 18 または Node.js 20 に設定し、コードのアップロード方法を [フォルダのアップロード] に設定します。詳細については、「イベント関数を作成する」をご参照ください。
関数詳細ページで、[設定] タブをクリックします。[高度な設定] セクションで [編集] をクリックし、[環境変数] を変更します。
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ログの表示
関数が実行された後、[ログ] タブでログを表示できます。詳細については、「関数の呼び出しログを表示する」をご参照ください。