温馨提示×

Debian系统JS日志记录设置指南

小樊
55
2025-08-23 14:47:31
栏目: 编程语言

Debian系统JS日志记录设置指南

一、选择日志库

推荐使用以下库,根据需求选择:

  • Winston:支持多传输(文件、控制台等)、日志级别控制,适合复杂场景。
  • Pino:高性能,JSON格式输出,适合生产环境。
  • Morgan:常用于HTTP请求日志,支持格式化输出。

二、安装与配置日志库

Winston为例:

  1. 安装
    npm install winston
    
  2. 基础配置(代码内):
    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插件:

  1. 安装
    npm install winston-daily-rotate-file
    
  2. 配置
    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

五、集中式日志管理(可选)

  • ELK Stack:将日志发送至Elasticsearch,通过Kibana可视化分析。
  • Syslog:通过Debian自带rsyslog服务,将日志集中到远程服务器。

六、权限与安全

  • 确保日志文件权限正确:
    chmod 640 /path/to/logs/*.log
    chown root:adm /path/to/logs/*.log
    
  • 敏感信息需脱敏处理,避免直接输出到日志。

参考来源[1,2,3,5,6,7,8,9,10,11]

0