注意:日志写入文件的默认路径是:工作目录(
s set workspace
)下的logs
, 您也可以设置 环境变量serverless_devs_log_path
更改写入文件的默认路径
以logger
能力为例,类使用方式的案例代码可以有两种方法。
-
方法 1:推荐使用 new Logger()方式
const { Logger } = require('@serverless-devs/core'); function loggerDemo() { const logger = new Logger('S-CORE'); logger.info('abc'); }
-
方法 2:使用 Logger 的静态方法,比如:Logger.info
const { Logger } = require('@serverless-devs/core'); function loggerDemo() { Logger.info('S-CORE', 'abc'); }
const { HLogger, ILogger } = require('@serverless-devs/core');
class LoggerDemo {
@HLogger('S-CORE') logger: ILogger;
getDefaultLog() {
this.logger.info('abc');
}
}
无论是上面的哪种使用方法,最终的效果如下:
用在 log
日志中,代表现在处于哪种环境变量中。
const { HLogger, Logger, ILogger } = require('@serverless-devs/core');
class LoggerDemo {
@HLogger('S-CORE') logger: ILogger;
getinfo() {
this.logger.info('abc');
}
}
// 或者
const logger = new Logger('S-CORE');
logger.info('abc');
// 或者
Logger.info('S-CORE', 'abc');
在 Serverless Devs Core Logger 中,levels 包括了 debug
, info
, warn
, error
等级别。 其中:
info
,warn
,error
三个级别的日志会被默认输出debug
级别日志需要通过--debug
进行输出
案例代码:
const { HLogger, ILogger } = require('@serverless-devs/core');
class LoggerDemo {
@HLogger('S-CORE') logger: ILogger;
test() {
this.logger.debug('测试debug');
this.logger.info('测试info');
this.logger.warn('测试warn');
this.logger.error('测试error');
}
}
默认输出:
通过 --debug
输出 debug
级别的日志:
Serverless Devs Core Logger 提供了类似 console.log()
一样的方法:log()
,通过方法,可以将内容打印到输出流,并且可以配置不同的颜色,例如:
const { HLogger, Logger, ILogger } = require('@serverless-devs/core');
class LoggerDemo {
@HLogger('S-CORE') logger: ILogger;
log() {
this.logger.log('黄色打印', 'yellow');
this.logger.log('绿色打印', 'green');
}
}
运行效果:
为了对Serverless Devs 的命令行工具输出,进行规范化升级,Serverless Devs Core Logger 提供了 task 方法。
- 基本模式下会输出极简的 log 信息
- --debug 模式下会输出详细的 log 信息
import { Logger } from '@serverless-devs/core';
function sleep(timer: number) {
return new Promise((resolve) => {
setTimeout(() => resolve(true), timer);
});
}
(async () => {
const logger = new Logger('S-CORE');
await logger.task('Checking', [
{
title: 'Checking git status',
id: 'git status',
task: async () => {
logger.debug('debug message');
await sleep(1000);
},
},
{
title: 'Checking remote history',
id: 'remote history',
enabled: () => Math.random() > 0.5,
task: async () => {
await sleep(1000);
},
},
{
title: 'Install package dependencies with Yarn',
task: async () => {
await sleep(1000);
},
},
]);
})();