首页主机资讯如何设置Ubuntu JS日志的详细程度

如何设置Ubuntu JS日志的详细程度

时间2025-12-02 11:34:03发布访客分类主机资讯浏览1000
导读:在 Ubuntu 上调整 JavaScript(Node.js)日志详细程度通常从两类入手:一是应用内日志库的日志级别,二是承载进程的 systemd 服务日志级别。下面给出可直接落地的做法与建议。 一、应用内日志级别设置 通用思路:在代...

在 Ubuntu 上调整 JavaScript(Node.js)日志详细程度通常从两类入手:一是应用内日志库的日志级别,二是承载进程的 systemd 服务日志级别。下面给出可直接落地的做法与建议。

一、应用内日志级别设置

  • 通用思路:在代码中为日志库设置 level(如 debuginfowarnerror),保存并重启应用后生效。
  • 常见库与示例:
    • 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('调试信息');
          
          
    • 环境变量快捷控制
      • Winstonexport WINSTON_LEVEL=debug
      • Pinoexport PINO_LEVEL=debug
      • 然后启动:node your-app.js
    • 运行时动态调节
      • 部分库支持运行时改级,例如 Winston:`logger.level = ‘debug’**。

二、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
Ubuntu JS日志中内存泄漏如何识别 Ubuntu JS日志监控工具有哪些推荐

游客 回复需填写必要信息