如何配置Debian JS日志
导读:Debian 上配置 JS 日志的实用方案 一 选择日志库与输出目标 常用日志库: Winston:多传输、可结构化输出,适合复杂场景。 Pino:高性能、低开销,生产环境优选。 Morgan:Express 的 HTTP 请求日志中间...
Debian 上配置 JS 日志的实用方案
一 选择日志库与输出目标
- 常用日志库:
- Winston:多传输、可结构化输出,适合复杂场景。
- Pino:高性能、低开销,生产环境优选。
- Morgan:Express 的 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 10M;pm2 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”
- app:
- services:
五 集中式日志与监控
- 使用 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
