当前位置: 首页
编程语言
Ubuntu下Node.js错误日志监控方法

Ubuntu下Node.js错误日志监控方法

热心网友 时间:2026-06-19
转载

Ubuntu中监控Node js错误日志可通过直接查看日志文件、使用PM2进程管理器、借助systemd的journalctl、采用Winston或Bunyan等第三方日志库以及配置logrotate日志轮替实现。不同方法侧重各异,日常调试可用tail-f,生产环境推荐PM2结合日志库及logrotate。

在Ubuntu系统中追踪Node.js应用的错误日志,有多种成熟的方法可供选择。无论是直接查阅日志文件、利用进程管理器辅助、集成系统日志,还是借助第三方工具,都能有效实现。以下详细介绍几种常用方案。

如何在Ubuntu中监控Node.js错误日志

1. 直接查看应用程序日志文件

如果你的Node.js应用将错误日志写入文件(例如通过console.error()重定向或使用第三方日志库),实时监控非常简单:

  • tail -f命令:这是最直接的方式,能够实时显示日志文件中新增的内容。例如,若错误日志位于/var/log/myapp-error.log,执行tail -f /var/log/myapp-error.log即可持续刷新最新的错误信息。
  • multitail工具:如果需要同时监控多个文件,multitail支持多文件同时监控、颜色高亮和分屏显示。安装命令:sudo apt-get install multitail,然后运行multitail /var/log/myapp-error.log即可开始使用。

2. 使用PM2进程管理器统一管理

PM2作为Node.js生态中常用的进程管理工具,自带日志捕获、实时查看、日志轮转、重启等功能,操作十分便捷:

  • 安装:全局安装命令为sudo npm install pm2 -g
  • 启动应用并指定错误日志路径:例如pm2 start app.js --name my-app --error logs/my-app-error.log;若不指定,PM2默认将错误日志存储到~/.pm2/logs/-error.log
  • 实时查看日志:执行pm2 logs my-app即可看到应用输出的实时错误信息。如需过滤,可结合greppm2 logs my-app | grep 'ERROR'

3. 利用系统日志(journalctl)进行整合

如果Node.js应用以系统服务方式运行(例如通过systemd管理),使用journalctl可以直接查看系统日志中的错误信息:

  • 首先创建一个systemd服务文件,例如/etc/systemd/system/my-nodejs-app.service,内容大致如下:
    [Unit]
    Description=My Node.js App
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/node /path/to/app.js
    Restart=always
    User=
    Group=
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=my-nodejs-app
    
    [Install]
    WantedBy=multi-user.target
  • 然后通过journalctl -u my-nodejs-app -t查看该服务的所有日志(包含错误),其中-u指定服务名,-t显示日志标签。

4. 借助第三方日志库实现精细记录

采用Winston、Bunyan等日志库,可以自定义日志格式、级别和存储路径,为后续分析提供便利:

  • Winston示例:安装npm install winston,配置一个仅记录error级别日志并输出到文件的logger:
    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'error',
      format: winston.format.json(),
      transports: [
        new winston.transports.File({ filename: 'logs/error.log' }),
        new winston.transports.Console() // 可选,同时输出到控制台
      ]
    });
    
    // 捕获错误时记录
    try {
      // 业务代码
    } catch (error) {
      logger.error('An error occurred:', error);
    }
  • Bunyan示例:安装npm install bunyan,配置一个输出JSON格式错误日志的logger:
    const bunyan = require('bunyan');
    const logger = bunyan.createLogger({
      name: 'my-app',
      streams: [
        { level: 'error', path: 'logs/app-error.log' }
      ]
    });
    
    logger.error('Database connection failed:', { error: err.message });

使用这些库记录的错误日志结构清晰,后续接入ELK Stack或Graylog等分析工具非常方便。

5. 日志轮转,防止磁盘空间耗尽

若不对错误日志加以控制,数月后可能占用大量磁盘空间。Linux自带的logrotate工具可以轻松解决这个问题:

  • /etc/logrotate.d/目录下新建一个配置文件(例如nodejs),内容示例如下:
    /path/to/your/nodejs/app/logs/*.log {
        daily          # 每天轮转一次
        missingok      # 日志文件不存在时不报错
        rotate 7       # 保留最近7天的日志
        compress       # 压缩旧日志
        notifempty     # 空文件不进行轮转
        create 0640    # 创建新日志文件并设置权限(替换为实际用户和组)
    }
  • 手动触发轮转:sudo logrotate -f /etc/logrotate.d/nodejs

以上几种方法各有适用场景:日常调试时使用tail -f即可满足需求;生产环境推荐PM2搭配日志库与logrotate的组合方案,能够覆盖常见监控需求。根据实际场景选择合适的方式,避免错误日志成为运维盲区。

来源:https://www.yisu.com/ask/2932975.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Go语言AES混淆加密解密敏感数据详解

Go语言AES混淆加密解密敏感数据详解

Go语言AES加密需注意:密钥长度必须为16、24或32字节,否则会引发panic;CBC模式解密乱码常因IV或PKCS7填充错误;GCM模式中nonce不可重用,否则密钥可被恢复;ECB模式因明文块输出固定密文,存在安全风险,不建议使用。

时间:2026-07-13 06:53
C++ std::atomic::wait高性能轮询等待原子变量状态变化

C++ std::atomic::wait高性能轮询等待原子变量状态变化

C++20的std::atomic::wait是轻量级等待机制,需GCC11+ Clang12+及glibc≥2 34,macOS不支持。需与notify配对,注意内存序,循环检查防虚假唤醒。超时版本精度有限,高性能关键在notify时机与内存序正确性。

时间:2026-07-13 06:53
VSCode左侧边栏不见了?快速找回方法

VSCode左侧边栏不见了?快速找回方法

按Ctrl+B或Cmd+B可恢复被误触隐藏的侧边栏。若无效,需检查窗口焦点是否在编辑器、是否处于全屏或Zen模式、workbench activityBar visible配置项、扩展冲突以及远程环境同步问题,并逐一排查。

时间:2026-07-13 06:53
VSCode中利用Node批量修改多媒体文件元数据标签

VSCode中利用Node批量修改多媒体文件元数据标签

music-metadata库支持跨格式读写MP3、FLAC、M4A、WAV等音频元数据,需先用parseFile()初始化,再调用writeMetadata()写入。批量修改前必须验证写入支持,封面图片需为Uint8Array格式。在VSCode终端运行脚本比插件更可控,处理中文路径时需切换终端代码页为UTF-8并指定ID3v2 3版本以避免乱码。

时间:2026-07-13 06:53
用Composer引入PHP-Console-Highlighter在终端高亮代码段

用Composer引入PHP-Console-Highlighter在终端高亮代码段

php-console-highlighter已废弃且不兼容现代PHP,无法通过Composer安装。推荐使用clue rainbow库,执行composerrequire后调用静态方法高亮代码。若需原库,须手动下载并require_once,但存在兼容问题,不推荐生产环境。

时间:2026-07-13 06:53
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜