node log4js入门

摘要:nodeJs 自己的log 输出一堆讯息,要从这么多又杂的讯息中找出问题,是件非常辛苦的事情。log4js 是一款基于Node 环境下较好用的log 模组,本篇简单介绍log4js 的使用方式。
nodeJs 自己的log 输出一堆讯息,要从这么多又杂的讯息中找出问题,是件非常辛苦的事情。log4js 是一款基于Node 环境下较好用的log 模组,本篇简单介绍log4js 的使用方式。
 
安装:
yarn add log4js

基本使用方式:

const log4js = require('log4js');

const logger = log4js.getLogger()
logger.level = 'all'

logger.trace('Some trace messages')
logger.debug('Some debug messages')
logger.info('Some info messages')
logger.warn('Some warn messages')
logger.error('Some error messages')
logger.fatal('Some fatal messages')

输出结果:

[2020-12-23T06:16:26.738] [TRACE] default - Some trace messages
[2020-12-23T06:16:26.741] [DEBUG] default - Some debug messages
[2020-12-23T06:16:26.741] [INFO] default - Some info messages
[2020-12-23T06:16:26.741] [WARN] default - Some warn messages
[2020-12-23T06:16:26.741] [ERROR] default - Some error messages
[2020-12-23T06:16:26.741] [FATAL] default - Some fatal messages

这里需要注意log 预设的level 是off,不会输出任何资讯,输出时可以设定的level 如下图:


调整log level 为all,并输出info 的log,可以看到类别的log,使用log4js.getLogger([category]) 默认会有default 的log,还可以为每个类别指定log 输出的等级,这里设定为info 等级。

const log4js = require('log4js');

const logger = log4js.getLogger()
logger.level = 'all'
logger.info('Some info messages', 'append', 'more')

const cheseLogger = log4js.getLogger('cheese')
cheseLogger.level = 'all'
cheseLogger.info('Cheese is Comte.')

输出结果:

[2020-12-23T06:20:47.880] [INFO] default - Some info messages append more
[2020-12-23T06:20:47.884] [INFO] cheese - Cheese is Comte.

自订配置可同时输出到指定文件跟command line:

appender

定义log 的输出介面,较常用的appender 有两种:

1.stdout 或stderr:将log 输出到彩色指令介面,前者为预设的appender
2.file:将log 输出到文件,可以指定单一log 文件的大小、备份数量等

filename:文件名称

maxLogSize:单一文件容量大小,默认无上限

backups:保留的文件数量,默认为 5

compress:是否压缩文件(.gz)

keepFileExt:沿用副档名(如:xxx.ext.1更改为xxx.1.ext)

encoding:默认值为utf-8

category

category 指的是log 输出时的选项,通常使用log4js.getLogger() 拿到log4js 系统中预设的log,通过指定的名称来取得配置文件中相应的log。配置时可以有多个category ,每个category 中可以有多个appender 。

const log4js = require('log4js');

log4js.configure({
appenders: {
out: { type: 'stdout' },
app: { type: 'file', filename: 'application.log' }
},
categories: {
default: { appenders: ['out', 'app'], level: 'debug' }
}
})

const logger = log4js.getLogger()
logger.level = 'all'

logger.trace('Some trace messages')
logger.debug('Some debug messages')
logger.info('Some info messages')
logger.warn('Some warn messages')
logger.error('Some error messages')
logger.fatal('Some fatal messages')

输出结果:

[2020-12-23T23:14:22.308] [TRACE] default - Some trace messages
[2020-12-23T23:14:22.311] [DEBUG] default - Some debug messages
[2020-12-23T23:14:22.311] [INFO] default - Some info messages
[2020-12-23T23:14:22.311] [WARN] default - Some warn messages
[2020-12-23T23:14:22.311] [ERROR] default - Some error messages
[2020-12-23T23:14:22.311] [FATAL] default - Some fatal messages
其他特殊自订模式:

log 输出时还可以配置自己喜欢样式,如:颜色、field 格式、时间格式..等。

字段:%[填充]。[截断][领域]{[格式]}

1. padding:需要几个空白字元

2. truncation:最大字数,超过会被截断

3. field:字段名称

4. format:字段选项

  • %m:输出程式码中指定的讯息
  • %p:输出优先顺序,即DEBUG,INFO,WARN,ERROR,FATAL 
  • %r:输出自应用启动到输出该log资讯耗费的毫秒数 
  • %c:输出所属的类目,通常就是所在类的全名 
  • %t:输出产生该日志事件的执行绪名 
  • %n:输出一个回车换行符,Windows平台为“\ \ ”,Unix平台为“\ ” 
  • %d:输出日志时间点的日期或时间,预设格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日22 : 10 : 28 , 921  
  • %l:输出日志事件的发生位置,包括类目名、发生的执行绪,以及在程式码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 
const log4js = require('log4js');

log4js.configure({
appenders: {
out: { type: 'stdout', layout: { type: 'pattern', pattern: '%d %[%5p%] %c %m' } },
app: { type: 'dateFile', filename: 'application.log', pattern: '.yyyyMMdd-hhmmss' }
},
categories: {
default: { appenders: ['out'], level: 'debug' },
custom: {appenders: ["out", "app"], level: "all"}
}
})


const logger = log4js.getLogger()
logger.level = 'all'

logger.trace('Some trace messages')
logger.debug('Some debug messages')
logger.info('Some info messages')
logger.warn('Some warn messages')
logger.error('Some error messages')
logger.fatal('Some fatal messages')

输出结果:

2020-12-24T00:38:38.210 TRACE default Some trace messages
2020-12-24T00:38:38.213 DEBUG default Some debug messages
2020-12-24T00:38:38.213 INFO default Some info messages
2020-12-24T00:38:38.213 WARN default Some warn messages
2020-12-24T00:38:38.213 ERROR default Some error messages
2020-12-24T00:38:38.213 FATAL default Some fatal messages


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_12677