首页主机资讯Debian JS日志如何配置

Debian JS日志如何配置

时间2025-12-08 22:22:03发布访客分类主机资讯浏览741
导读:Debian 上配置 JS 日志的实用方案 一 选择日志库与输出目标 常用库与场景 Winston:功能全面,支持多传输(文件、控制台、HTTP 等)、多格式,适合中大型项目。 Pino:高性能,生产环境友好,配合 pino-prett...

Debian 上配置 JS 日志的实用方案

一 选择日志库与输出目标

  • 常用库与场景
    • Winston:功能全面,支持多传输(文件、控制台、HTTP 等)、多格式,适合中大型项目。
    • Pino:高性能,生产环境友好,配合 pino-pretty 可在开发环境获得可读输出。
    • Morgan:Express 的 HTTP 请求日志中间件,专注记录访问日志。
    • Log4js:配置化能力强,支持按类别输出与滚动。
  • 快速示例
    • Winston(按级别分流到文件与控制台)
      • 安装:npm install winston
      • 配置:
        • const winston = require(‘winston’);
        • const logger = winston.createLogger({ level: ‘info’, format: winston.format.json(), transports: [ new winston.transports.File({ filename: ‘error.log’, level: ‘error’ } ), new winston.transports.File({ filename: ‘combined.log’ } ), new winston.transports.Console({ format: winston.format.simple() } ) ] } );
    • Pino(开发期彩色可读,生产期 JSON)
      • 安装:npm install pino pino-pretty
      • 配置:
        • const pino = require(‘pino’);
        • const logger = pino({ level: ‘info’, transport: process.env.NODE_ENV !== ‘production’ ? { target: ‘pino-pretty’, options: { colorize: true } } : undefined } );
    • Morgan(记录 HTTP 请求)
      • 安装:npm install morgan
      • 配置(Express):
        • const morgan = require(‘morgan’);
        • app.use(morgan(‘combined’)); // 或 ‘dev’/‘tiny’ 等预设

二 日志级别与动态控制

  • 级别设置
    • 常见级别(由低到高):error < warn < info < debug。设置 logger 的 level 后,只有大于等于该级别的日志会被输出。
  • 运行时通过环境变量控制
    • 代码示例:
      • const logLevel = process.env.LOG_LEVEL || ‘info’;
      • const logger = winston.createLogger({ level: logLevel, … } );
    • 启动命令:
      • LOG_LEVEL=debug node app.js
  • 环境区分
    • 生产环境建议输出 JSON 到文件,开发环境输出 可读格式 到控制台,便于排查。
      • if (process.env.NODE_ENV !== ‘production’) { logger.add(new winston.transports.Console({ format: winston.format.simple() } )); }

三 日志轮转与保留策略

  • 应用内轮转(推荐与文件输出配合)
    • Winston + winston-daily-rotate-file
      • 安装:npm install winston-daily-rotate-file
      • 配置:
        • const DailyRotateFile = require(‘winston-daily-rotate-file’);
        • new DailyRotateFile({ filename: ‘application-%DATE%.log’, datePattern: ‘YYYY-MM-DD-HH’, zippedArchive: true, maxSize: ‘20m’, maxFiles: ‘14d’ } )
  • 系统级轮转(对 Node 写出的 *.log 文件统一处理)
    • 使用 logrotate(Debian 自带)
      • 新建配置:sudo nano /etc/logrotate.d/nodejs
      • 示例:
        • /path/to/your/nodejs/logs/*.log { daily rotate 7 compress missingok notifempty create 0644 root root }
      • 校验与强制执行:
        • sudo logrotate -d /etc/logrotate.d/nodejs
        • sudo logrotate -f /etc/logrotate.d/nodejs
  • 何时用哪种
    • 单进程/单实例:应用内轮转更直观。
    • 多实例/多文件/容器:系统级 logrotate 更易统一运维。

四 运行与运维实践

  • 使用 PM2 管理进程与日志
    • 安装:sudo npm install -g pm2
    • 启动:pm2 start app.js --name "my-app"
    • 分别记录错误与标准输出:
      • 命令行:pm2 start app.js --name "my-app" --error err.log --output out.log
      • 或在 ecosystem.config.js:
        • module.exports = { apps: [{ name: ‘my-app’, script: ‘app.js’, error_file: ‘err.log’, out_file: ‘out.log’ } ] }
    • 查看日志:pm2 logs my-app
  • 命令行查看与检索
    • 实时查看:tail -f app.log
    • 关键字检索:cat app.log | grep "error"
  • 反向代理日志(如 Nginx)
    • 自定义访问日志格式并写入 /var/log/nginx/access.log,便于与后端日志关联分析。

五 集中式日志与可视化

  • 将日志发送到 ELK Stack(Elasticsearch, Logstash, Kibana) 或其他集中式系统,便于检索、分析与告警。
  • 结合 Prometheus + Grafana 做指标可视化与阈值告警,形成可观测性闭环。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian JS日志如何配置
本文地址: https://pptw.com/jishu/766412.html
Debian JS日志如何审计 Debian JS日志如何保护隐私

游客 回复需填写必要信息