node log4js入门

更新日期: 2024-03-06阅读: 284标签: 日志
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平台为“\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


链接: https://www.fly63.com/article/detial/12677

前端日志上报的新姿势“Beacon”

在前端应用越来复杂的今天,为了监控前端应用是否正常运行,通常会在前端收集一些错误与性能等数据,最终我们会将这些数据上报到服务端。上报的方式有很多,理论上我们只要能把数据发给服务端就行了

Nginx 日志自定义记录及启用日志缓冲区

如果想统计网站的访问来源信息,可以用 php 获取信息,记录到数据库的形式,也可以直接使用 nginx 提供的访问日志,来记录网站的访问详情,管理员可以通过分析 nginx 的访问日志,来分析用户的访问来源,访问行为详情

Node.JS应用最佳实践:日志

日志记录是每个开发人员从第一天编写代码时就要做的事情,但很少有人知道它可以产生的价值和最佳实践。在本文中,我们将讨论以下主题:什么是日志,为什么很重要性?

用 Mongoose 插件记录Node.js API 日志

随着程序的增长,日志记录成为跟踪所有内容的关键部分。它对于调试目的尤为重要。现在已经有了 npm 的日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行的ORM Mongoose

Node.js 如何在本地生成日志文件

平常都使用console来打印 node 脚本执行时需要看到的信息,但这些信息也就只能在控制台查看。假如你希望将打印的信息记录到文件查看的话,那就往下看看吧。使用 node.js 对日志进行存储,就一定会对本地文件的增删改查,那么我们需要用到fs。

nodejs如何打印日志文件?

通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单介绍一下。

前端日志管理模块的设计与实现

在项目中,我们会频繁用到 ​ ​console.log()​ ​ 来输出一些关键信息到控制台中,有助于开发调试,以及问题的排查,待项目上线后,这些调试日志又得及时清除。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!