日志管理

日志目录结构

基于应用的目录规范,我们约定了以下的目录结构。

结构如下:

loggDir 默认在 ~/logs 目录,可以通过全局配置修改,参见下面的章节。

- ${loggDir}
	- pandorajs
		- deamon.log // Pandora.js 守护进程的日志
		- metrics.log // 符合规范的 Mertics 日志
	- $appName
		- nodejs_stdout.log // 标准的 Stdout 记录
		- error.log // 应用自行定义的日志文件
	- $appName2 // 如果是 egg 应用
		- nodejs_stdout.log // 标准的 Stdout 记录
		- common-error.log
		- ... 

Node.js 标准输出

  1. Pandora.js 会将 Stdout 写在 ${logsDir}/${appName}/nodejs_stdout.log
  2. 按照日期进行日志切割

日志相关的默认配置

日志的行为可以通过全局配置进行配置,具体是:

{
  logger: {
    logsDir: join(homedir(), 'logs'), // 日志目录
    appLogger: { // 每个应用的日志配置,基本上就是 Stdout
      stdoutLevel: 'NONE', // 默认不输出到 Daemon 的 Stdout,请务必不要改变这一配置
      level: 'INFO' // 默认记录 Info 信息,比如应用启动停止,建议保持 INFO
    },
    isolatedServiceLogger: false // Service 的日志是否分散为单个日志文件,建议保持 false
  }
}

如何进行全局配置参见全局配置章节

日志等级

  1. ALL - 全部等级
  2. DEBUG - DEBUG 及其以下
  3. INFO - INFO 及其以下
  4. WARN - WARN 及其以下
  5. ERROR - ERROR 及其以下
  6. NONE - 全部不输出

创建自定义日志

可以通过 require('dorapan').getService('logger').createLogger(name, config) 创建,其中 config 定义如下:

{
  dir: string; // 日志所在目录
  stdoutLevel: string; // stdout 输出的等级,默认 ERROR
  level: string; // 文件输出等级,默认 WARN
  type: string; // 日志切割类型,可选 日期:date 、 尺寸:size,默认日期
  rotateDuration?: number; // 尺寸切割的检查周期,毫秒
  maxFiles?: number; // 尺寸切割时的最多文件数量
  maxFileSize?: number; // 尺寸切割时的文件大小
}

更详细参见 LoggerService

对接集中日志服务

请参与讨论:https://github.com/midwayjs/pandora/issues/50

日志自动清理

Pandora.js 暂不提供日志清理功能,但 Pandora.js 已经将日志按天切割(或尺寸)。可以针对 ~/logs 配置一个简单 crontab,如类似教程

上次更新: 2018-9-19 14:35:44