debian

Debian Node.js日志配置技巧

小樊
52
2025-10-05 20:36:23
栏目: 编程语言

1. 选择合适的日志库
Debian环境下,Node.js常用的日志库各有优势:Winston功能全面,支持多传输方式(文件、控制台、系统日志等)和灵活配置,是大多数场景的首选;Pino以高性能著称,适合对日志写入速度要求高的生产环境;Bunyan默认输出结构化JSON日志,便于后续分析;Log4js不依赖运行时框架,配置灵活,适合复杂应用。根据项目需求(如性能、结构化需求)选择合适的库。

2. 基础日志配置方法
以Winston为例,基础配置需包含日志级别输出格式传输目标。以下是一个兼顾开发与生产的配置示例:

const { createLogger, format, transports } = require('winston');
const logger = createLogger({
  level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', // 生产环境用info,开发环境用debug
  format: format.combine(
    format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), // 添加时间戳
    format.printf(({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`) // 自定义输出格式
  ),
  transports: [
    new transports.Console(), // 开发环境输出到控制台
    new transports.File({ filename: 'logs/error.log', level: 'error' }), // 错误日志单独存文件
    new transports.File({ filename: 'logs/combined.log' }) // 所有日志合并存文件
  ]
});
module.exports = logger;

在应用中引入后,可通过logger.info()logger.error()等方法记录日志。

3. 日志轮转与归档
为避免日志文件过大占用磁盘空间,需启用日志轮转。常用方法有两种:

4. 使用PM2管理日志
PM2是Node.js进程管理工具,可简化日志管理流程。安装PM2:sudo npm install -g pm2,启动应用时指定日志文件:

pm2 start app.js --name "my-node-app" --error "logs/err.log" --output "logs/out.log"

或通过配置文件(ecosystem.config.js):

module.exports = {
  apps: [{
    name: 'my-node-app',
    script: 'app.js',
    error_file: 'logs/err.log',
    out_file: 'logs/out.log'
  }]
};

常用日志命令:pm2 logs(查看实时日志)、pm2 logs my-node-app(查看指定应用日志)、pm2 flush(清空日志)。

5. 集中式日志管理
生产环境中,建议将日志发送到集中式日志管理系统,便于统一分析和监控。常用方案:

6. 日志级别与环境适配
通过环境变量控制日志级别,适应不同环境需求:

const logger = createLogger({
  level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
  // ...其他配置
});

7. 权限与安全配置
确保日志文件的权限正确,防止未授权访问:

0
看了该问题的人还看了