日志对于 Web 开发的重要性毋庸置疑,它对于监控应用的运行状态、问题排查等都有非常重要的意义。
框架内置了强大的企业级日志支持,由 egg-logger 模块提供。
自定义日志
// 自定义日志
config.customLogger = {
payLog: {
file: path.join('./pay.json'),
},
// 自定义日志名称
scheduleLogger: {
// 日志级别
level: 'INFO',
// 自定义日志路径
file: path.join('./schedule.json'),
},
requestLog: {
level: 'INFO',
file: path.join('./requestLog.json'),
},
responseLog: {
level: 'INFO',
file: path.join('./responseLog.json'),
},
};
自定义日志 输出格式 输出编码
// 自定义日志路径
config.logger = {
// 默认编码为 utf-8,可通过如下方式覆盖 以下设置成gbk:
encoding: 'utf-8',
// 设置输出格式为JSON,方便日志监控系统分析
outputJSON: true,
// 定义日志路径
dir: path.join('./logs/', appInfo.name),
// 应用相关日志,供应用开发者使用的日志。我们在绝大数情况下都在使用它。
appLogName: 'app-log.json',
// 框架内核、插件日志
coreLogName: 'core-log.json',
// 进程日志,框架和使用到 agent 进程执行任务的插件会打印一些日志到这里。
agentLogName: 'agent-log.json',
// 实际一般不会直接使用它,任何 logger 的 .error() 调用输出的日志都会重定向到这里,重点通过查看此日志定位异常。
errorLogName: 'error-log.json',
// 打印所有级别日志到文件中 关闭所有打印到文件的日志
level: 'DEBUG',
// level: 'NONE',
// 终端日志级别
consoleLevel: 'DEBUG',
// 日志格式
contextFormatter(meta) {
return [
meta.date,
meta.message,
].join('[]');
},
// 日志格式
formatter() {
// 返回 console.log(`[${meta.date}] [${meta.ctx} ${meta.ctx}] ${meta.message}`);
return;
},
};
日志切割
// 日志切割 我们也可以按照文件大小进行切割。例如,当文件超过 2G 时进行切割。默认按照天来切割
config.logrotator = {
// filesRotateBySize: [
// path.join(appInfo.root, 'logs', appInfo.name, 'egg-web.log'),
// ],
// maxFileSize: 2 * 1024 * 1024 * 1024,
};