面试题答案
一键面试- 安装
winston
库: 在项目目录下运行npm install winston
。 - 配置不同环境的日志格式:
创建一个日志配置文件,例如
logger.js
。const winston = require('winston'); const { format } = winston; const { combine, timestamp, printf } = format; // 开发环境详细格式 const devFormat = combine( timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), printf(({ level, message, timestamp }) => { return `${timestamp} [${level}]: ${message}`; }) ); // 生产环境简洁格式 const prodFormat = printf(({ level, message }) => { return `${level}: ${message}`; }); const logger = winston.createLogger({ level: 'info', transports: [ new winston.transport.Console() ] }); if (process.env.NODE_ENV === 'development') { logger.transports[0].format = devFormat; } else { logger.transports[0].format = prodFormat; } module.exports = logger;
- 在不同环境下灵活切换:
- 开发环境:
在开发环境中,确保
NODE_ENV
环境变量设置为development
。在Linux或macOS系统中,可以在启动命令前设置,如NODE_ENV=development node app.js
。在Windows系统中,可以使用set NODE_ENV=development && node app.js
。这样logger.js
中的逻辑会检测到NODE_ENV
为development
,从而使用开发环境的详细日志格式。 - 生产环境:
在生产环境中,将
NODE_ENV
环境变量设置为production
。部署时可以在服务器的环境变量设置中配置NODE_ENV=production
。logger.js
中的逻辑会检测到NODE_ENV
为production
,从而使用生产环境的简洁日志格式。
- 开发环境:
在开发环境中,确保
在项目的其他文件中,引入该logger
模块即可使用相应环境的日志格式,例如:
const logger = require('./logger.js');
logger.info('This is an info log');