linux

Linux Node.js日志级别设置有哪些技巧

小樊
44
2025-07-24 13:10:30
栏目: 编程语言

在Linux系统中,Node.js应用程序的日志级别设置可以通过多种方式实现,具体取决于你使用的日志框架和运行环境。以下是一些常见情况的设置方法:

  1. 使用Node.js内置的console模块

    Node.js内置的console模块提供不同级别的日志输出:

    console.error('错误信息');    // 错误级别
    console.warn('警告信息');     // 警告级别
    console.log('普通信息');      // 信息级别
    console.info('信息');        // 信息级别
    console.debug('调试信息');    // 调试级别
    

    要控制输出级别,可以创建自定义logger或使用环境变量过滤:

    const logLevel = process.env.LOG_LEVEL || 'info';
    function log(level, ...args) {
      const levels = ['error', 'warn', 'info', 'debug'];
      if (levels.indexOf(level) <= levels.indexOf(logLevel)) {
        console[level](...args);
      }
    }
    
  2. 使用Winston日志库

    Winston是Node.js中流行的日志库,支持多级别日志:

    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'info', // 默认级别
      format: winston.format.simple(),
      transports: [
        new winston.transports.Console(),
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' })
      ]
    });
    
    // 通过环境变量设置级别
    logger.level = process.env.LOG_LEVEL || 'info';
    
    // 使用不同级别
    logger.error('错误信息');
    logger.warn('警告信息');
    logger.info('普通信息');
    logger.debug('调试信息');
    
  3. 使用Bunyan日志库

    Bunyan是另一个流行的结构化日志库:

    const bunyan = require('bunyan');
    const logger = bunyan.createLogger({
      name: 'myapp',
      level: 'info'
    });
    
    logger.error('错误信息');
    logger.warn('警告信息');
    logger.info('普通信息');
    logger.debug('调试信息');
    
  4. 使用PM2进行日志管理

    如果你使用PM2来管理Node.js应用程序,可以通过PM2的配置文件或命令行参数来设置日志级别。例如,使用PM2的配置文件ecosystem.config.js

    module.exports = {
      apps: [{
        name: 'my-app',
        script: 'app.js',
        env: {
          NODE_ENV: 'development',
          LOG_LEVEL: 'debug' // 设置日志级别
        },
        env_production: {
          NODE_ENV: 'production',
          LOG_LEVEL: 'info' // 生产环境日志级别
        }
      }]
    };
    

    然后使用PM2启动应用程序:

    pm2 start ecosystem.config.js --env production
    
  5. 使用环境变量设置日志级别

    在Linux中运行应用时,可以通过环境变量设置日志级别:

    LOG_LEVEL=debug node app.js
    

    或者导出环境变量:

    export LOG_LEVEL=warn
    node app.js
    
  6. 日志轮转配置

    对于生产环境,通常需要配置日志轮转以避免单个日志文件过大。可以使用pm2-logrotate模块来管理日志轮转:

    pm2 install pm2-logrotate
    pm2 set pm2-logrotate:max_size 10M
    pm2 set pm2-logrotate:retain 5
    pm2 set pm2-logrotate:workerInterval 2
    

通过以上方法,你可以在Linux环境下为Node.js应用程序设置灵活的日志级别和有效的日志管理策略。

0
看了该问题的人还看了