MST

星途 面试题库

面试题:Node.js 日志管理中如何配置 Winston 实现多文件日志输出

在Node.js项目中,使用Winston进行日志管理。请描述如何配置Winston,使其能够将不同级别的日志分别输出到不同的文件中,比如将error级别的日志输出到error.log文件,info级别的日志输出到info.log文件。
47.5万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. 首先安装 winston

    npm install winston
    
  2. 然后在Node.js项目中进行如下配置:

    const winston = require('winston');
    
    const logger = winston.createLogger({
        level: 'info',
        format: winston.format.json(),
        transports: [
            new winston.transport.Console(),
            new winston.transport.File({
                filename: 'error.log',
                level: 'error'
            }),
            new winston.transport.File({
                filename: 'info.log',
                level: 'info'
            })
        ]
    });
    
    module.exports = logger;
    

    上述代码通过 winston.createLogger 创建一个日志记录器。

    • level 设置为 info,表示默认记录 info 及以上级别的日志。
    • format 设置为 winston.format.json(),以JSON格式记录日志。
    • transports 数组中定义了三个传输方式:
      • new winston.transport.Console() 将日志输出到控制台。
      • new winston.transport.File({filename: 'error.log', level: 'error'}) 只将 error 级别的日志输出到 error.log 文件。
      • new winston.transport.File({filename: 'info.log', level: 'info'}) 只将 info 级别的日志输出到 info.log 文件。

    在项目其他地方使用时,直接引入该 logger 实例,例如:

    const logger = require('./logger');
    logger.info('这是一条info日志');
    logger.error('这是一条error日志');