推荐使用以下库,根据需求选择:
以Winston为例:
npm install winston const winston = require('winston'); const logger = winston.createLogger({ level: 'info', // 日志级别(error/warn/info/debug) format: winston.format.json(), // 输出格式 transports: [ new winston.transports.Console(), // 输出到控制台 new winston.transports.File({ filename: 'error.log', level: 'error' }), // 错误日志单独文件 new winston.transports.File({ filename: 'combined.log' }) // 所有日志文件 ] }); logger.info('这是一条信息日志'); 使用winston-daily-rotate-file插件:
npm install winston-daily-rotate-file const DailyRotateFile = require('winston-daily-rotate-file'); const transport = new DailyRotateFile({ filename: 'app-%DATE%.log', datePattern: 'YYYY-MM-DD', maxSize: '20m', // 单个文件最大20MB maxFiles: '14d', // 保留14天日志 zippedArchive: true // 压缩旧日志 }); const logger = winston.createLogger({ transports: [transport] }); 通过环境变量调整日志级别,无需修改代码:
const logLevel = process.env.LOG_LEVEL || 'info'; // 优先读取环境变量,未设置则默认info const logger = winston.createLogger({ level: logLevel, // 其他配置... }); 启动时指定环境变量:
LOG_LEVEL=debug node app.js rsyslog服务,将日志集中到远程服务器。chmod 640 /path/to/logs/*.log chown root:adm /path/to/logs/*.log