在应用程序代码中发出自定义日志消息或事件通常很有用;无论您是在跟踪后台发送的出站电子邮件的状态,还是只是在寻找可配置的替代方案来调用应用程序代码中的console.log()
。
为了方便起见,Sails 将其内部日志记录接口公开为sails.log
。其用法故意与 Node 的console.log()
非常相似,但具有一些额外功能;即支持具有彩色、前缀控制台输出的多个日志级别。
请参阅sails.log()了解更多信息和示例,或sails.config.log了解配置选项。
下面每个日志方法都接受无限多个任何数据类型的参数,用逗号分隔。与console.log
一样,传递给 Sails 记录器的参数数据会使用 Node 的util.inspect()
自动美化以提高可读性。因此,标准 Node.js 约定适用;任何字典、错误、日期、数组或其他数据类型都将使用util.inspect()
中的内置逻辑进行漂亮打印(例如,您会看到{ pet: { name: 'Hamlet' } }
而不是[object Object]
)。此外,如果您记录的对象具有自定义inspect()
方法,记录器将自动运行该方法并将返回的字符串写入控制台。
在“error”日志级别将日志输出写入stderr
。用于跟踪重大错误。
sails.log.error('Sending 500 ("Server Error") response.');
// -> error: Sending 500 ("Server Error") response.
在“warn”日志级别将日志输出写入stderr
。用于跟踪有关静默失败的操作的信息。
sails.log.warn('File upload quota exceeded for user #%d. Request aborted.', user.id);
// -> warn: File upload quota exceeded for user #94271. Request aborted.
又名 sails.log.debug()
默认日志函数,它在“debug”日志级别将控制台输出写入stderr
。用于在团队成员之间传递重要的技术信息;或者作为console.log()
的通用替代方案。
sails.log('This endpoint (`POST /accounts`) will be deprecated in the next few days. Please use `POST /signup` instead. ');
// -> debug: This endpoint (`POST /accounts`) will be deprecated in the next few days. Please use `POST /signup` instead.
在“info”日志级别将日志输出写入stdout
。用于捕获有关应用程序业务逻辑的信息。
sails.log.info('A new user (', newUser.emailAddress, ') just signed up!');
// -> info: A new user ( [email protected] ) just signed up!
在“verbose”日志级别将日志输出写入stdout
。用于捕获有关应用程序的详细信息,这些信息您只需在极少数情况下使用。
sails.log.verbose('A user (IP adddress: `%s`) initiated an account transfer...', req.ip);
// -> verbose: A user (IP adddress: `10.48.1.191`) initiated an account transfer...
在“silly”日志级别将日志输出写入stdout
。用于捕获有关应用程序的技术详细信息,这些信息仅对诊断和/或故障排除有用。
sails.log.silly(
'Successfully fetched Account record for requesting authenticated user (`%d`).',
'Took %dms.', req.param('id'), msElapsed);
// -> silly: Successfully fetched Account record for authenticated user (`49722`). Took 41ms.