温馨提示×

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

小樊
51
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