日志

更新时间:

您可以在Node.js运行环境中打印和查看日志,通过日志快速定位问题或分析日志了解函数执行过程和耗时等,提升系统的可靠性和稳定性。

打印日志

函数往标准输出stdout打印的日志内容会被收集到创建服务时指定的Logstore中,您可以使用如下几种方式打印日志至标准输出stdout。示例代码如下所示。

ES模块

说明
  • 此示例仅支持运行在Node.js 18及以上版本的运行时环境。

  • 当前示例代码支持一键部署,您可以直接在函数计算FC中一键部署本代码。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打印日志

使用此方法打印的每条日志中都会包含时间、RequestId、日志级别等信息。输出的日志内容如下所示。

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

直接使用context.logger打印日志

当您配置的函数实例并发度大于1时,一个函数实例会同时并发处理多个请求。此时强烈建议使用context.logger打印日志,以通过RequestId区分各并发请求的日志。输出的日志内容如下所示。

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()打印的日志不会受该环境变量影响,是会打印其日志的。

操作步骤

  1. 建一个用于测试的代码目录,如code

  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. 登录函数计算控制台,选择创建事件函数,运行环境需选择Node.js 18或Node.js 20,上传方式选择通过文件夹上传代码。更多具体操作,请参见创建事件函数

  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

查看日志

函数执行完成后,您可以在函数详情页的调用日志页签查看日志信息。具体操作和说明,请参见查看调用日志