nodejs log4js 使用详解

yizhihongxing

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日

相关文章

  • 在Node.js中实现文件复制的方法和实例

    下面是在Node.js中实现文件复制的方法和实例的完整攻略。 方法1:使用fs模块实现文件复制 Node.js内置的fs模块中包含了文件系统的各种API,可以用来实现文件的读写和复制,其中最常用的方法是fs.copyFile()。 步骤1:引入fs模块 const fs = require(‘fs’); 步骤2:使用fs.copyFile()方法实现文件复制…

    node js 2023年6月8日
    00
  • express项目文件目录说明以及功能描述详解

    下面我将为你详细讲解Express项目文件目录说明以及功能描述的攻略。 Express项目文件目录说明 一个典型的 Express 应用通常包含以下目录和文件: myapp/ |– node_modules/ |– public/ | |– images/ | |– javascripts/ | |– stylesheets/ | |– styl…

    node js 2023年6月8日
    00
  • nodejs文件实现打包成exe, 并设置开机自启动的方法详解(没有黑窗口)

    下面就详细讲解一下如何实现“nodejs文件实现打包成exe, 并设置开机自启动的方法详解(没有黑窗口)”: 1. 安装pkg和node-windows 1.1 安装pkg pkg是一个命令行工具,可以将Node.js程序打包成独立的可执行文件(在macOS、Linux和Windows上都可以使用),可以在不安装Node.js的情况下运行。要使用pkg,首先…

    node js 2023年6月8日
    00
  • WebSocket+node.js创建即时通信的Web聊天服务器

    我将为你讲解 “WebSocket+node.js创建即时通信的Web聊天服务器” 的完整攻略。 1. 什么是WebSocket? WebSocket是一种基于TCP连接的全双工通信协议,可以实现客户端与服务器之间的双向实时通信,不需要手动轮询。 2. WebSocket的使用环境 在使用WebSocket之前,需要确认以下两点: 1.客户端浏览器是否支持W…

    node js 2023年6月8日
    00
  • Node.js实用代码段之获取Buffer对象字节长度

    获取Buffer对象字节长度是在Node.js中处理二进制数据时非常常见的操作之一。本文将介绍如何在Node.js中获取Buffer对象字节长度的各种方法以及它们的优缺点。 1.使用Buffer.length获取字节长度 通过Buffer.length属性可以获取Buffer对象的字节长度。这种方法对于小型的Buffer对象非常有效,但是当需要处理大型的Bu…

    node js 2023年6月8日
    00
  • Node.js数据库钩子的使用

    Node.js是一个非常流行的服务器端运行时环境,可以使用它来构建高效的应用程序。在Node.js应用程序中,我们经常需要连接到数据库,并在数据库读取或写入数据时执行某些操作。Node.js提供了一种非常强大的技术 – 数据库钩子,可以用于在数据库读写操作的执行前或执行后自动执行某些特定的代码。 什么是数据库钩子 数据库钩子是一种让你在数据库执行查询或写入操…

    node js 2023年6月8日
    00
  • NodeJS使用jQuery选择器操作DOM

    下面我将详细讲解”NodeJS使用jQuery选择器操作DOM”的完整攻略。 什么是NodeJS和jQuery? 在深入讲解NodeJS和jQuery之前,我们先来了解一下这两个常用的工具。 NodeJS NodeJS是一个跨平台的JavaScript运行环境,可以在服务器端运行JavaScript代码。NodeJS使用Google Chrome的V8引擎作…

    node js 2023年6月8日
    00
  • node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例

    下面我将详细讲解“node.js 使用 net 模块模拟 WebSocket 握手进行数据传递操作示例”的完整攻略。 简介 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。在 WebSocket 连接被建立后,数据可以双向流动。WebSocket 协议使用的默认端口是 80 和 443,其中 80 是非安全连接,443 是安全连接。 N…

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