您可以在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()
打印的日志不会受该环境变量影响,是会打印其日志的。
操作步骤
建一个用于测试的代码目录,如
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'); }
登录函数计算控制台,选择创建事件函数,运行环境需选择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
查看日志
函数执行完成后,您可以在函数详情页的调用日志页签查看日志信息。具体操作和说明,请参见查看调用日志。