溫馨提示×

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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女