nodejs log4js 使用详解

Node.js log4js 使用详解

在Node.js项目开发中,我们往往需要记录日志以追踪程序的运行情况。log4js 是一个功能强大的记录日志的模块,它支持多种日志级别和日志输出方式。本篇文章将详细介绍 log4js 的使用,包括安装,配置和示例。

安装 log4js

你可以通过 npm 安装 log4js:

npm install log4js --save

配置 log4js

log4js 的配置文件可以是 JSON 或者 JavaScript 模块,下面是一个 JSON 配置文件的例子:

{
  "appenders": {
    "console": {
      "type": "console"
    },
    "file": {
      "type": "file",
      "filename": "logs/app.log",
      "maxLogSize": 20480,
      "backups": 3,
      "compress": true
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "console",
        "file"
      ],
      "level": "info"
    }
  }
}
  • "appenders" 包含了两个 fppender: "console" 和 "file"。"console" fppender 用于将日志输出到控制台,“file” fppender 将日志输出到文件。
  • "categories" 指定了日志的分类,"default" 是一个默认分类,指定了日志级别为 info,并且将日志输出到 "console" 和 "file" fppender。

我们通常会将配置文件放在项目的根目录,并将它称为 'log4js.json' 或者 'log4js.config.js' (对应于 JSON 和 JavaScript 配置文件)。

如果你使用了 JavaScript 配置文件,你需要导出一个对象,该对象包含了配置信息。例如 module.exports = { /* 配置信息 */ }

使用 log4js

使用 log4js 可以非常简单,只需要导入 log4js 模块并配置 logging 器。

const log4js = require('log4js');
log4js.configure('./log4js.json');
const logger = log4js.getLogger('default');

logger.trace('Entering cheese testing');
logger.debug('Got cheese.');  
logger.info('Cheese is Gouda.');  
logger.warn('Cheese is quite smelly.');  
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');

输出:

[2021-09-22T03:45:23.737] [INFO] default - Cheese is Gouda.
[2021-09-22T03:45:23.747] [WARN] default - Cheese is quite smelly.
[2021-09-22T03:45:23.747] [ERROR] default - Cheese is too ripe!
[2021-09-22T03:45:23.748] [FATAL] default - Cheese was breeding ground for listeria.

在示例中,我们首先要导入 log4js 模块。然后,使用 log4js.configure() 方法来配置 logging 器。在默认情况下,logging 器的名称是 'default'。

接下来,我们通过 log4js.getLogger('default') 创建了一个 logging 器实例,并通过调用不同的日志级别的方法来记录日志。

示例1:将日志输出到文件

在配置文件中加入一个名为 'file' 的 fppender 可以把日志输出到文件中,我们可以通过以下示例:

{
  "appenders": {
    "file": {
      "type": "file",
      "filename": "logs/app.log",
      "maxLogSize": 20480,
      "backups": 3,
      "compress": true
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "file"
      ],
      "level": "info"
    }
  }
}

这样示例程序将只会输出到文件中:

const log4js = require('log4js');
log4js.configure('./log4js.json');
const logger = log4js.getLogger('default');

logger.trace('Entering cheese testing');
logger.debug('Got cheese.');  
logger.info('Cheese is Gouda.');  
logger.warn('Cheese is quite smelly.');  
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');

输出:

app.log:

[2021-09-22T03:45:23.737] [INFO] default - Cheese is Gouda.
[2021-09-22T03:45:23.747] [WARN] default - Cheese is quite smelly.
[2021-09-22T03:45:23.747] [ERROR] default - Cheese is too ripe!
[2021-09-22T03:45:23.748] [FATAL] default - Cheese was breeding ground for listeria.

示例2:自定义日志格式

我们可以使用 log4js.addLayout() 方法自定义日志格式。下面是一个示例:

const log4js = require('log4js');
log4js.addLayout('json', function (config) {
  return function (logEvent) { return JSON.stringify(logEvent) + config.separator; }
});
log4js.configure({
  appenders: {
    console: { type: 'console' }
  },
  categories: {
    default: {
      appenders: ['console'],
      level: 'trace'
    }
  }
});
const logger = log4js.getLogger('default');
logger.fatal({ message: 'test log' });

输出:

{"startTime":"2021-09-22T03:54:38.911Z","categoryName":"default","data":[{"message":"test log"}],"level":"FATAL","context":"DEFAULT","cluster":{"worker":null,"master":null},"pid":27374,"hostname":"xxx.xx.x.xx"}    

在这个示例中,我们使用 addLayout() 方法自定义了一个名为 'json' 的日志格式,然后在 categories 中把输出流设置为 console fppender。当我们调用 logger.fatal() 方法时,日志会根据我们自定义的日志格式输出。

总结

log4js 是一个功能强大的日志记录器,它提供了丰富的日志级别和日志输出方式。在我们的项目中合理使用 log4js 可以方便我们追踪程序的运行情况,排查问题。在使用中我们可以使用配置文件来设置 log4js 的行为,以及自定义日志格式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs log4js 使用详解 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 使用iojs的jsdom库实现同步系统时间

    使用iojs的jsdom库实现同步系统时间的完整攻略如下所示: 安装jsdom和moment库 在使用jsdom之前,需要先安装它。可以使用npm来进行安装: npm install jsdom 同时,我们也需要安装moment库。moment是一个针对JavaScript时间操作的库。可以通过以下命令进行安装: npm install moment 使用j…

    node js 2023年6月8日
    00
  • javascript学习笔记(十九) 节点的操作实现代码

    关于“JavaScript学习笔记(十九)节点的操作实现代码”的攻略如下: 1. 理解DOM节点 在进行DOM节点的操作前,我们需要先了解DOM节点的基本知识。DOM(Document Object Model)文档对象模型,它是HTML文档的树形结构,我们可以通过JavaScript来访问和操作这个树形结构上的每个节点。 DOM节点包括元素节点、文本节点、…

    node js 2023年6月8日
    00
  • TypeScript与JavaScript项目里引入MD5校验和

    一、为什么需要MD5校验和 在前端开发过程中,我们经常需要加载网络上的静态资源,例如 JavaScript 文件、CSS 文件、图片等。如果文件在网络传输的过程中被修改或篡改,或者服务器上文件被修改,那么将会导致页面的异常。为了避免这种情况,需要使用 MD5 校验和来保证文件的完整性。 MD5 是一种哈希算法,将任意长度的信息压缩成一个128位(16字节)的…

    node js 2023年6月8日
    00
  • 如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)

    下面是完整攻略。 什么是H5 History模式? H5 History模式是HTML5中新增的History API。它通过更改浏览器地址栏的URL来实现页面不刷新的页面跳转效果。在使用H5 History API时,需要在Nodejs中配置路由规则来支持。一般来说,当你在单页应用中进行跳转时,H5 History模式都是被默认启用的。 解决方案 若要让N…

    node js 2023年6月8日
    00
  • 关于node编写文件上传的接口的坑及解决

    当使用Node.js编写文件上传的接口时,可能会遇到以下坑点: 对于大文件上传,内存可能会不足,导致服务器崩溃。因此,需要使用流的方式读取上传文件,而不是将整个文件直接读取到内存中。 在多个文件同时上传或者文件较大时,可能会导致上传速度变慢或者上传过程中出现错误。这个坑点可以通过对上传进度进行监控和限制上传速度来解决。 针对这些坑点,下面是详细的解决方案: …

    node js 2023年6月8日
    00
  • 深入理解Node内建模块和对象

    深入理解Node内建模块和对象需要我们具备以下知识: Node.js的内置模块列表 Node.js内置对象的使用方法和功能 Node.js的内置模块列表 Node.js提供了丰富的内置模块,可以用于处理不同的任务,包括操作文件系统、网络通信、加密、压缩等等。以下是Node.js内置模块的列表: assert:断言模块 buffer:缓存模块 child_pr…

    node js 2023年6月8日
    00
  • Node.js 使用 zlib 内置模块进行 gzip 压缩

    当我们需要在 Node.js 服务器端进行文件传输或者数据传输时,有时候需要对数据进行压缩。Node.js 提供了内置的 zlib 模块来实现对数据的压缩和解压。本文将详细讲解如何使用 zlib 模块进行 gzip 压缩,并提供两个实例说明。 使用 zlib 模块进行 gzip 压缩 步骤一:引入 zlib 模块 在 Node.js 中我们使用 requir…

    node js 2023年6月8日
    00
  • Node.js Webpack常见的模式详解

    Node.js Webpack常见的模式详解 什么是Webpack Webpack是一个流行的模块打包器,它能够将多个JavaScript文件打包成一个或多个文件,同时也可以处理其他类型的文件(如CSS、图片等)。Webpack支持各种各样的模块化规范和前端框架,能够为项目提供高效的资源管理和打包功能。 常用的Webpack模式 Webpack有许多常见的模…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部