如何设置Ubuntu JS日志的详细程度
导读:在 Ubuntu 上调整 JavaScript(Node.js)日志详细程度通常从两类入手:一是应用内日志库的日志级别,二是承载进程的 systemd 服务日志级别。下面给出可直接落地的做法与建议。 一、应用内日志级别设置 通用思路:在代...
在 Ubuntu 上调整 JavaScript(Node.js)日志详细程度通常从两类入手:一是应用内日志库的日志级别,二是承载进程的 systemd 服务日志级别。下面给出可直接落地的做法与建议。
一、应用内日志级别设置
- 通用思路:在代码中为日志库设置 level(如 debug、info、warn、error),保存并重启应用后生效。
- 常见库与示例:
- Winston
- 安装:
npm install winston - 配置:
- 代码示例:
const winston = require('winston'); const logger = winston.createLogger({ level: 'debug', // 调整此处:debug/info/warn/error format: winston.format.combine( winston.format.timestamp(), winston.format.printf(({ timestamp, level, message } ) => { return `${ timestamp} ${ level.toUpperCase()} : ${ message} `; } ) ), transports: [new winston.transports.Console()] } ); logger.debug('调试信息'); - 也可按传输分别设置级别(如控制台更详细、文件仅错误):
new winston.transports.Console({ level: 'debug' } ), new winston.transports.File({ filename: 'error.log', level: 'error' } )
- 代码示例:
- 安装:
- Pino
- 安装:
npm install pino - 配置:
- 代码示例:
const pino = require('pino')(); pino.level = 'debug'; // 调整此处 pino.info('信息'); pino.debug('调试'); - 也可通过环境变量控制:export PINO_LEVEL=debug
- 代码示例:
- 安装:
- Morgan(Express HTTP 请求日志)
- 安装:
npm install morgan - 配置:
- 代码示例:
const express = require('express'); const morgan = require('morgan'); const app = express(); app.use(morgan('combined')); // 常用:combined / common / tiny / dev // 也可按条件记录 app.use(morgan(':method :url :status :res[content-length] - :response-time ms', { skip: (req,res) => res.statusCode < 400 } ));
- 代码示例:
- 安装:
- Bunyan
- 安装:
npm install bunyan - 配置:
- 代码示例:
const bunyan = require('bunyan'); const logger = bunyan.createLogger({ name: 'my-app', level: 'debug' } ); logger.debug('调试信息');
- 代码示例:
- 安装:
- 环境变量快捷控制
- Winston:
export WINSTON_LEVEL=debug - Pino:
export PINO_LEVEL=debug - 然后启动:
node your-app.js
- Winston:
- 运行时动态调节
- 部分库支持运行时改级,例如 Winston:`logger.level = ‘debug’**。
- Winston
二、systemd 服务日志级别
- 若你的 Node.js 进程由 systemd 托管,可调整服务的 LogLevel(影响 systemd 自身对该服务日志的捕获与显示详细程度),以及是否将 stdout/stderr 接入 syslog。
- 示例单元文件片段:
[Unit] Description=My Node.js App [Service] ExecStart=/usr/bin/node /path/to/your/script.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=my_service LogLevel=info # 可改为 debug 等 [Install] WantedBy=multi-user.target - 使配置生效并验证:
- 重新加载:
sudo systemctl daemon-reload - 重启服务:
sudo systemctl restart my_service - 查看日志:
sudo journalctl -u my_service -f(加 -f 实时跟踪)
- 重新加载:
三、环境与性能建议
- 环境策略:开发环境用 debug/info,生产环境用 warn/error,以降低开销并减少日志量。
- 输出目标:开发期输出到控制台便于排查;生产期建议写入文件,并按级别分流(如 error.log 仅错误,combined.log 全量)。
- 日志轮转:使用 logrotate 控制单文件大小与保留周期,示例:
/path/to/your.log { daily missingok rotate 7 compress notifempty create 640 root adm } - 性能与可观测性:高并发场景优先选用高性能库(如 Pino),必要时启用异步写入/批量写入,并考虑接入 ELK/Graylog 做集中分析与告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何设置Ubuntu JS日志的详细程度
本文地址: https://pptw.com/jishu/761097.html
