node 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 messageslog 输出时还可以配置自己喜欢样式,如:颜色、field 格式、时间格式..等。
字段:%[填充]。[截断][领域]{[格式]}
1. padding:需要几个空白字元
2. truncation:最大字数,超过会被截断
3. field:字段名称
4. format:字段选项
- %m:输出程式码中指定的讯息
- %p:输出优先顺序,即DEBUG,INFO,WARN,ERROR,FATAL
- %r:输出自应用启动到输出该log资讯耗费的毫秒数
- %c:输出所属的类目,通常就是所在类的全名
- %t:输出产生该日志事件的执行绪名
- %n:输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
- %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本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!