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

如何配置Debian JS日志

时间2025-12-12 20:09:04发布访客分类主机资讯浏览323
导读:Debian 上配置 JS 日志的实用方案 一 选择日志库与输出目标 常用日志库: Winston:多传输、可结构化输出,适合复杂场景。 Pino:高性能、低开销,生产环境优选。 Morgan:Express 的 HTTP 请求日志中间...

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

一 选择日志库与输出目标

  • 常用日志库:
    • Winston:多传输、可结构化输出,适合复杂场景。
    • Pino:高性能、低开销,生产环境优选。
    • MorganExpress 的 HTTP 请求日志中间件。
  • 基本输出目标:
    • Console(开发/调试)
    • 文件(按级别拆分,如 error/combined)
    • 可选:HTTP、流等(Winston 支持多传输)
  • 示例(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() } ) ] } );
      • logger.info(‘Hello, world!’); logger.error(‘Oops!’);
  • 示例(Pino 控制台美化):
    • 安装:npm install pino pino-pretty
    • 配置:
      • const pino = require(‘pino’);
      • const logger = pino({ level: ‘info’, transport: { target: ‘pino-pretty’, options: { colorize: true } } } );
      • logger.info(‘Hello, world!’); logger.error(‘Oops!’);

二 自定义日志格式与 HTTP 访问日志

  • 自定义格式(Winston 时间戳 + printf):
    • const { format } = require(‘winston’);
    • const logger = winston.createLogger({ level: ‘info’, format: format.combine( format.timestamp({ format: ‘YYYY-MM-DD HH:mm:ss’ } ), format.printf(({ timestamp, level, message } ) => { return ${ timestamp} [${ level.toUpperCase()} ]: ${ message} ; } ) ), transports: [new winston.transports.Console()] } );
  • Express + Morgan(HTTP 请求日志):
    • 安装:npm install morgan
    • 配置:
      • const express = require(‘express’); const morgan = require(‘morgan’);
      • const app = express();
      • app.use(morgan(‘combined’)); // 或自定义 ‘:method :url :status :res[content-length] - :response-time ms’
      • app.listen(3000);
  • 反向代理日志格式(Nginx 示例):
    • http { log_format custom ‘$remote_addr - $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent” “$http_x_forwarded_for”’; access_log /var/log/nginx/access.log custom; error_log /var/log/nginx/error.log; … }
    • 如需调整代理层日志级别,可在 Nginx 中设置:log_level info; (注意这是 Nginx 自身日志级别,非应用日志级别)。

三 日志轮转与系统级管理

  • 应用内轮转(Winston + Daily Rotate File):
    • 安装:npm install winston-daily-rotate-file
    • 配置:
      • const DailyRotateFile = require(‘winston-daily-rotate-file’);
      • const transport = new DailyRotateFile({ filename: ‘application-%DATE%.log’, datePattern: ‘YYYY-MM-DD-HH’, zippedArchive: true, maxSize: ‘20m’, maxFiles: ‘14d’ } );
      • const logger = winston.createLogger({ level: ‘info’, transports: [transport, new winston.transports.Console()] } );
  • 系统级轮转(logrotate,适用于 Node 直接写文件或 PM2 输出文件):
    • 新建配置: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(强制执行)
  • 进程管理(PM2 内置日志与轮转):
    • 安装:sudo npm install -g pm2
    • 启动:pm2 start app.js --name my-app
    • 查看:pm2 logs
    • 分别输出错误与标准输出:pm2 start app.js --name my-app --error err.log --output out.log
    • 日志轮转(PM2 内置策略):pm2 set pm2-logrotate:max_size 10Mpm2 set pm2-logrotate:retain 14

四 环境变量与运行时控制

  • 通过环境变量控制日志级别与输出:
    • const logLevel = process.env.LOG_LEVEL || ‘info’;
    • const logger = winston.createLogger({ level: logLevel, 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’ } )] } );
  • Docker 场景(docker-compose.yml 片段):
    • services:
      • app:
        • build: .
        • environment:
          • NODE_ENV=production
          • LOG_LEVEL=debug
        • logging:
          • driver: “json-file”
          • options:
            • max-size: “10m”
            • max-file: “3”

五 集中式日志与监控

  • 使用 ELK Stack(Elasticsearch + Logstash + Kibana)集中收集与分析:
    • 安装并启动 Elasticsearch、Logstash、Kibana(示例为 7.x 源安装与 systemd 启动)。
    • Logstash 收集 Node.js 日志(/etc/logstash/conf.d/nodejs.conf 示例):
      • input { file { path => “/path/to/your/nodejs/logs/*.log” start_position => “beginning” } }
      • filter { }
      • output { elasticsearch { hosts => [“localhost:9200”] index => “nodejs-logs-%{ +YYYY.MM.dd} ” } }
    • 重启 Logstash:sudo systemctl restart logstash
    • Kibana 创建索引模式(如 nodejs-logs-*)并在 Discover 中查看分析。

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


若转载请注明出处: 如何配置Debian JS日志
本文地址: https://pptw.com/jishu/770858.html
Linux系统中如何管理Golang依赖 Linux环境下Golang如何进行调试

游客 回复需填写必要信息