Logo Vincent
返回文章列表

Node.js-WebServer开发实践:本地日志

Node.js
Node.js-WebServer开发实践:本地日志
目录

【前言】

本地日志是服务端开发中必备的能力,

在nodejs web server的开发过程中,

可以使用log4js实现本地日志能力,

【qiao-log】

log4js的使用可以查看官网文档,

这里封装了一个npm包,欢迎使用: https://www.npmjs.com/package/qiao-log

默认输出日志到控制台和本地,

本地输出的日志使用datefile方式,

对应的配置项如下,

  {
    appenders: {
      stdout: {
        type: 'stdout',
      },
      datefile: {
        type: 'dateFile',
        pattern: 'yyyy-MM-dd-hh',
        filename: 'log.log',
        keepFileExt: true,
      },
    },
    categories: {
      default: {
        level: 'debug',
        appenders: ['stdout', 'datefile'],
      },
    },
  }

使用方法如下

1. 创建logger,其中options非必选

const Logger = require("qiao-log");
const logger = Logger(options);

2. 打印日志

logger.debug;
logger.info;
logger.warn;
logger.error;

效果如下

1. 在控制台输出日志

2. 在对应的目录下输出日志

【qiao-z中使用】

qiao-z是一个极简的nodejs web server框架,

详见: https://qiao-z.vincentqiao.com/#/

可以在qiao-z中很方便的使用qiao-log插件来写本地日志

初始化时传入qiao-log插件和log-options,如下

// options
const options = {
  // log
  log: require("qiao-log"),
  logOptions: require("./server/log-options.js")(),
};

// qz
const qz = require("qiao-z");

// app
const app = qz(options);

需要写本地日志的地方可以使用req.logger写日志,如下

req.logger.error(error);

log-options.js内容如下

/**
 * log options
 * @returns
 */
module.exports = () => {
  // log options
  const logLevel = "debug";
  const logPattern = "yyyy-MM-dd-hh";
  const logPath = require("path").resolve(__dirname, "../logs/qiao-z.log");

  return {
    appenders: {
      stdout: {
        type: "stdout",
      },
      datefile: {
        type: "dateFile",
        pattern: logPattern,
        filename: logPath,
        keepFileExt: true,
      },
    },
    categories: {
      default: {
        level: logLevel,
        appenders: ["stdout", "datefile"],
      },
    },
  };
};

【总结】

1. log4js介绍,https://www.npmjs.com/package/log4js

2. qiao-log介绍, https://code.insistime.com/#/qiao-log

3. 在qiao-z中使用qiao-log插件,  https://qiao-z.vincentqiao.com/#/plugins/logger

相关推荐

Node.js-WebServer开发实践:使用PM2-Cluster模式提升接口QPS

【前言】 pm2是nodejs进程管理工具, https://pm2.keymetrics.io/ 介绍详见之前的一篇文章: https://blog.csdn.net/uikoo9/article/details/79018750 , 本文介绍下pm2的cluster模式, 并使用pm2的clus

Node.js-WebServer开发实践:使用autocannon进行接口压测

【前言】 AutoCannon是基于Node.js的接口压测工具, https://www.npmjs.com/package/autocannon 【安装】 【cli使用】 AutoCannon可以通过cli的方式使用, 其中各参数的含义可以直接输入autocannon查看, 例如10个并发连接,

Node.js-开发实践:图片处理

【前言】 使用nodejs的过程中会遇到一些处理图片的场景, 比如上传图片时进行压缩, 或者nodejs开发客户端本处理图片等, 本文介绍下nodejs常见的图片处理操作。 【常见图片处理库】 nodejs常见的图片处理库如下, 可以看到sharp从各方面都遥遥领先 npm包 github地址 gi

Node.js-开发实践:下载文件

【前言】 下载文件是Node.js中最常见的功能, 但实际开发中下载文件也会隐藏各种各样的坑。 【原始代码】 如果在网络搜索Node.js下载文件代码, 大概会搜到类似下面的代码片段, 本文从这里开始,陆续优化下载文件这个功能。 上面的代码片段可以看到: 1.兼容了Node.js原生的http和ht

Node.js-开发实践:使用健壮的FS

【前言】 fs模块是nodejs中最常见的模块, 可是fs的使用经常会有各种意想不到的坑。 【高性能FS】 其中之一是没有使用高性能的fs, 导致在electron应用中造成卡顿, fs模块有3种使用方式, callback方式 1\. 书写会导致回调地狱 2\. 体现nodejs事件驱动,非阻塞i

© 2026 vincentqiao.com . 保留所有权利。