sails.config.log
Sails 应用中 日志记录器 的配置。这些设置适用于你在应用代码中调用 sails.log.debug()
或 sails.log.error()
等函数时,以及 Sails 自动将消息记录到控制台时。这些选项通常在 config/log.js 配置文件中指定。
属性 | 类型 | 默认值 | 详细信息 |
---|---|---|---|
level | 'info' |
设置应用日志中显示的详细程度。 | |
inspect | true |
设置为 false 可禁用船长日志的日志处理,日志将改为传递给配置的自定义日志记录器。 | |
custom | undefined |
指定对自定义日志记录器实例(例如 Winston)的引用。如果提供,则不会直接记录到控制台,而是会调用自定义日志记录器公开的函数,并将来自 Sails 的日志消息传递过去。有关更多信息,请参阅 captains-log。 |
有时配置自定义日志记录器很有用,特别是对于法规遵从性和组织需求(例如,如果您的公司在其他应用中使用特定日志记录器)。在 Sails 的上下文中,配置自定义日志记录器还可以让你拦截框架自动创建的所有日志消息,这对于设置有关错误和警告的电子邮件通知非常有用。
如果你想要这些类型的通知,不要觉得你 *必须* 使用自定义日志记录器!实际上,通常有更直接的方法来实现像错误发生时的自动 Slack、短信或电子邮件通知等功能。一种方法是自定义应用的默认服务器错误响应 (
responses/serverError.js
)。另一个流行的选项是使用 Papertrail 等产品,或 AppDynamics 或 NewRelic 等监控服务。
以下是一个配置 Winston 作为自定义日志记录器的示例,定义了控制台传输和文件传输。首先,将 winston
添加为项目的依赖项
npm install winston
然后,将 config/log.js
的内容替换为以下内容
// config/log.js
const { version } = require('../package');
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, label, printf, align } = format;
const { SPLAT } = require('triple-beam');
const { isObject } = require('lodash');
function formatObject(param) {
if (isObject(param)) {
return JSON.stringify(param);
}
return param;
}
// Ignore log messages if they have { private: true }
const all = format((info) => {
const splat = info[SPLAT] || [];
const message = formatObject(info.message);
const rest = splat.map(formatObject).join(' ');
info.message = `${message} ${rest}`;
return info;
});
const customLogger = createLogger({
format: combine(
all(),
label({ label: version }),
timestamp(),
colorize(),
align(),
printf(info => `${info.timestamp} [${info.label}] ${info.level}: ${formatObject(info.message)}`)
),
transports: [new transports.Console()]
});
module.exports.log = {
custom: customLogger,
inspect: false
// level: 'info'
};
req
)