日志对于 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,};
