log4js 随笔

参考
https://log4js-node.github.io/log4js-node/index.html

API

  1. 在载入 log4js 模块后需要马上配置该模块,否则 log4js 会引用默认配置或者 LOG4JS_CONFIG (如果已经定义) -- 参考(https://blog.csdn.net/wonder233/article/details/80738658
  2. Config 字段: levels appenders categories pm2 pm2InstanceVar disableClustering
    1. levels
      1. 默认优先级 ALL(Number.MIN_VALUE) < TRACE(5000) < DEBUG(10000) < INFO(20000) < WARN(30000) < ERROR(40000) < FATAL(50000) < MARK(9007199254740992) < OFF(Number.MAX_VALUE)
      2. OFF 不是日志等级,调用 logger.off('...') 将会关闭日志功能
      3. 默认优先级可以更改
      4. node_modules/log4js/lib/levels.js 中有默认优先级的颜色范围,优先级整数(数字越小等级越低),
      5. { ..., LevelsName: { value: 1234, colour: 'yellow' }, ...}
      6. 可选颜色: 'white', 'grey', 'black','blue', 'cyan', 'green','magenta', 'red', 'yellow'
      7. 颜色自定义在:node_modules/log4js/lib/layouts.js : const styles = { ... }
    2. appenders
      1. 定义插件的参数到插件实例,将会指定引用的插件类型(type),插件的参数(除开 type 字段,其他字段都会传入插件模块,具体的字段名称需要查看插件内部实现)
      2. 参考: https://log4js-node.github.io/log4js-node/appenders.html
      3. Core appender Type: categoryFilter console dateFile file fileSync logLevelFilter multiFile multiprocess recording stderr stdout tcp tcp-server
      4. Optional appender Type: gelf hipchat logFaces-HTTP logFaces-UDP loggly logstashHTTP logstashUDP mailgun rabbitmq redis slack smtp
      5. 当 type 字段的值没在上叙范围内,则将会夹在 type 字段指向的目标目录的模块,如果自己要写插件,则可先参考 https://log4js-node.github.io/log4js-node/writing-appenders.html
    3. categories
      1. 定义将哪些日志类型的 log 输出到哪些插件
      2. default 一定要配置的,这是所有的 log 都会输出到此类
      3. 可以配置输出源(appender),输出等级 level, 是否现实调用栈的状态(enableCallStack -- 显示文件名,行号)
      4. 格式 default: { appenders: [ 'out', 'app' ], level: 'debug' }
    4. pm2
      1. 如果你使用了 pm2,一定要 enable 此选项
      2. 而且一定要安装 pm2 install pm2-intercom
    5. pm2InstanceVar
      1. 默认 NODE_APP_INSTANCE
      2. 如果您正在使用pm2并更改了NODE_APP_INSTANCE变量的默认名称,请设置此项。
    6. disableClustering
      1. set this to true if you liked the way log4js used to just ignore clustered environments, or you’re having trouble with PM2 logging.
      2. Each worker process will do its own logging. Be careful with this if you’re logging to files, weirdness can occur.
  3. Loggers API
    1. 打印 log : ( ... ) 如:debug( 'print some logs' )
    2. 查看 level 等级的 log 是否打开 isEnable()
    3. addContext( key, value ) 添加一个键值对,将会出现在所有 log 中,目前只有 logFaces 插件支持
    4. removeContext( key ): addContext 的 anti-action
    5. clearContext: remove all addContext
    6. level:打印等级(将会覆盖所有 appender 中的)
  4. shutdown
  5. addLayout

插件 API

  1. file
    1. 三种 file( File Appender ), dateFile( Date Rolling File Appender ), fileSync( Synchronous File Appender )
    2. File Appender 与 Synchronous File Appender 的区别在于
    3. 记录日志的方法:dateFile 根据时间来轮询,file 和 filesync 根据文件大小来轮询
    4. file(sync) 的参数:filename, maxLogSize, backups, layout, ( next params will passed to underlying nodejs core stream implementation ) encoding(default “utf-8”), mode- integer (default 0644), flags - string (default ‘a’)
    5. datafile 的参数: filename, pattern, layout, ( next params will passed to underlying nodejs core stream implementation ), encoding, mode, flags, compress( true/false 是否压缩备份 ), alwaysIncludePattern( true/false 在日志文件名称中是否包含 pattern ), daysToKeep( 滚动天数限制 ), keepFileExt( 滚动保存时候保留文件扩展名称 )
  2. ...
上一篇:pm2使用 node 进程管理


下一篇:Ubuntu下安装Yarm-PM2