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日

相关文章

  • Javascript数据结构之栈和队列详解

    Javascript数据结构之栈和队列详解 本文将详细讲解Javascript中常用的数据结构之一,栈和队列。 栈 什么是栈? 栈是一种“后进先出(LIFO)”的数据结构,也就是说最后进入栈的元素被最先移除。栈一般用数组或链表实现。 栈的操作 常用的栈操作有: push: 将一个元素添加到栈的顶部。 pop: 从栈的顶部移除一个元素,并返回它。 peek: …

    node js 2023年6月8日
    00
  • vue中wangEditor5编辑器的基本使用

    Vue中wangEditor5编辑器的基本使用攻略 安装wangEditor5 通过npm进行安装 npm install wangeditor –save 引入wangEditor 在Vue项目的入口文件main.js中引入wangEditor,并且将它挂载到Vue实例上去。 “` import Vue from ‘vue’ import WangEd…

    node js 2023年6月9日
    00
  • node path的使用详解

    Node.js Path模块使用详解 Node.js提供了路径处理的模块Path,它可以方便地处理文件路径的操作。本文将详细讲解Path模块的基本使用方法,并且提供几个实例让读者更好地理解。 Path模块的基本用法 要使用Path模块,需要首先引入: const path = require(‘path’); path.basename(path[, ext…

    node js 2023年6月8日
    00
  • 基于Node.js搭建hexo博客过程详解

    基于Node.js搭建hexo博客是一种非常流行的建站方式。下面我来详细讲解该过程。 准备工作 1.安装Node.js 首先你需要安装Node.js,可以从官方网站下载安装包进行安装。 2.安装Hexo 打开命令行工具(Windows下为cmd,Mac下为Terminal),执行以下命令: npm install -g hexo-cli 这条命令会在全局环境…

    node js 2023年6月8日
    00
  • Node.js学习教程之Module模块

    Module是Node.js中非常重要的一个概念,它不仅充实了Node.js的功能,还简化了Node.js中的代码实现。本篇教程将详细介绍Node.js Module的定义、使用方法以及相关的注意点。 什么是Module? Module是一个可以被其他模块导入和使用的Node.js文件或文件夹。在Node.js中,任何一个.js文件都可以看作是一个Modul…

    node js 2023年6月8日
    00
  • Node.js 基础教程之全局对象

    下面是针对“Node.js 基础教程之全局对象”的完整攻略。 全局对象 在Node.js中,有一个名为“全局对象”的概念,它是一个拥有所有全局属性和方法的对象,也就是说,在Node.js中,我们可以直接通过全局对象来访问这些属性和方法。在众多的全局对象中,我们最常用的是: console:控制台对象,用于输出各种类型的信息。 process:进程对象,用于处…

    node js 2023年6月8日
    00
  • 深入理解 JS 垃圾回收

    深入理解 JS 垃圾回收攻略 什么是垃圾回收? 垃圾回收是指删除不再使用的对象(以下简称“垃圾”),以释放内存空间。在 JavaScript 中,相当于销毁没被引用的对象。 如何判断对象是否需要回收? JavaScript 引擎通过“标记清除”算法进行垃圾回收,它的基本思路是从根对象开始,找到所有已经被引用的对象,标记它们。然后清除所有未被标记的对象。 举个…

    node js 2023年6月8日
    00
  • 基于node下的http小爬虫的示例代码

    下面是基于Node.js的HTTP小爬虫的完整攻略。 什么是小爬虫? 小爬虫是指相对于大型搜索引擎的全网爬虫而言,实现爬取网站数据的一种较小规模的爬虫程序。小爬虫一般是为了实现对某个特定网站或特定需求的数据抓取而存在。 Node.js中的HTTP模块 Node.js的核心模块之一是HTTP模块。它提供了一系列API,用于处理HTTP请求、响应和连接。我们可以…

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