egg 在内部使用 egg-logger 插件完成日志记录

日志路径

  1. 默认情况下,日志保存在 根目录/logs/工程名 中;

    • 建议根据环境的不同配置不同的日志路径
    • 开发环境可以保持不变
    • 生产环境放到系统统一的日志目录中
  2. 可以通过下面的配置自定义日志路径;

    exports.logger = {
      dir: '/var/logs/egg-logs',
    };
    

日志分类

  1. egg 的内置日志分为下面几类,通过相关 api 即可完成日志记录

    类别 输出目标 含义 api
    appLogger 项目名-web.log 应用相关日志 ctx.logger
    app.logger
    coreLogger egg-web.log 框架内核、插件日志 ctx.coreLogger
    app.coreLogger
    errorLogger common-error.log error 级别的日志均会记录到这里 详见日志级别
    agentLogger egg-agent.log agent 的进程日志 agent.logger
  2. 无论使用哪个 api 记录日志,都会有对应的 日志级别 ,分别是

    日志对象.debug("some info"); // 记录调试信息
    日志对象.info("some info"); // 记录普通信息
    日志对象.warn("some info"); // 记录警告信息
    日志对象.error(new Error("some info")); // 记录错误信息,应该使用错误对象,否则无法得到堆栈信息
    

日志配置

// 配置文件
exports.logger = {
  // 配置日志文件的目录
  dir: '/var/logs/egg-logs',

  // 配置不同类别的日志对应的文件名
  appLogName: 'duyi-app-web.log',
  coreLogName: 'egg-web.log',
  agentLogName: 'egg-agent.log',
  errorLogName: 'common-error.log',

  // 配置哪些级别及其以上的日志要被记录到日志文件,设置为NONE则会关闭日志记录,默认为 INFO
  level: 'DEBUG', 

  // 配置哪些级别及其以上的日志要被打印到控制台,设置为NONE则会关闭日志记录,默认为 INFO
  consoleLevel: 'DEBUG'

  // 配置日志文件的编码,默认为 utf-8
  encoding: 'gbk',

  // 是否使用json格式记录日志,默认为false
  outputJSON: true,
};

自定义日志

  1. 使用自定义日志可以增加日志的类别

    // 配置文件
    // 配置自定义日志类别
    exports.customLogger = {
        myLogger: { // 属性名为类别名称
          file: path.resolve(__dirname, "../logs/my-logger.log"), // 配置日志文件
          // 配置哪些级别及其以上的日志要被记录到日志文件,设置为NONE则会关闭日志记录,默认为 INFO
          level: 'DEBUG', 
          // 配置哪些级别及其以上的日志要被打印到控制台,设置为NONE则会关闭日志记录,默认为 INFO
          consoleLevel: 'DEBUG',
          // 配置日志文件的编码,默认为 utf-8
          encoding: 'gbk',
          // 是否使用json格式记录日志,默认为false
          outputJSON: true,
    
          // app logger
          formatter(meta) {
              return `[${meta.date}] ${meta.message}`;
          },
          
          // ctx logger
          contextFormatter(meta) {
            return `[${meta.date}] [${meta.ctx.method} ${meta.ctx.url}] ${meta.message}`;
          },
        }
    }
    
  2. 记录自定义日志:

    app.getLogger('myLogger') // 获取全局应用日志对象
    ctx.getLogger('myLogger') // 获取上下文日志对象
    
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 日志路径
  2. 2. 日志分类
  3. 3. 日志配置
  4. 4. 自定义日志