位置:首页 > JavaScript > 如何在 Ubuntu 上实现 Node.js 日志分割

如何在 Ubuntu 上实现 Node.js 日志分割

时间:2026-08-25  |  作者:星河游者  |  阅读:0

目录

  1. 安装 Node.js 和 pm2
  2. 先让应用跑起来
  3. 通过 ecosystem.config.js 配置日志分割
  4. 用配置启动并检查日志
  5. 停用与重启应用
  6. 这套方案适合什么场景

前言

在 Ubuntu 上部署 Node.js 服务后,日志通常会先于业务代码变成维护负担:文件越积越大,标准输出和错误信息混在一起,查问题时很难快速定位。本文用 pm2 这条最常见的运维路径,把安装、启动、日志分割配置和日常查看命令串起来,让你能判断哪些参数必须配、哪些策略适合直接用于线上。

在 Ubuntu 上运行 Node.js 应用时,日志往往是最先失控的一块:文件持续增长、错误输出和普通输出混在一起,查问题时很难快速定位。本文按照“安装 Node.js 与 pm2、配置日志参数、用配置文件启动并检查日志”的顺序梳理一遍,帮助你判断哪些设置适合直接用默认值,哪些项需要按生产环境单独调整。

安装 Node.js 和 pm2

如果系统里还没有 Node.js,可以先更新软件索引并安装 nodejsnpm

sudo apt update
sudo apt install nodejs npm

随后全局安装 pm2。它既是 Node.js 进程管理器,也负责日志输出、重启控制和多实例运行,适合拿来做基础运维:

sudo npm install pm2 -g

装好之后,就具备了管理应用进程和日志的基本条件。

先让应用跑起来

在正式加配置前,可以先直接启动一次应用,确认入口文件和运行环境没有问题:

pm2 start app.js

这里的 app.js 替换成你自己的 Node.js 入口文件即可。这样做的好处是先把“程序能否正常运行”和“日志如何管理”分开处理,排错时更直接。

如果这一步能够正常启动,后面再切换到配置文件方式就会顺畅很多。

通过 ecosystem.config.js 配置日志分割

pm2 默认会接管应用日志,但如果你希望明确指定日志路径、输出格式和轮转行为,更适合使用 ecosystem.config.js。可以新建或编辑这个文件:

pm2 配置文件中与日志分割相关的关键参数关系图
pm2 日志配置关键项把日志路径、时间格式、多实例输出与轮转策略放在同一张图里,便于快速理解。
module.exports = {
  apps: [{
    name: 'my-app',
    script: 'app.js',
    instances: 'max', // 或者指定具体数字
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    },
    log_date_format: "YYYY-MM-DD HH:mm Z",
    out_file: "./logs/out.log",
    error_file: "./logs/error.log",
    combine_logs: true,
    rotate_logs: true,
    time: true,
    append: true,
    cron_restart: "0 0 * * *", // 每天午夜重启应用
  }]
};

这份配置里,和日志管理关系最密切的参数主要有几类:

日志输出位置

out_fileerror_file 分别定义标准输出和错误输出的文件路径。把两类日志拆开保存,通常会比全部混在一个文件里更利于排查问题。

pm2 查看日志与维护应用的常用命令对照图
pm2 常用命令速查把启动、查看最近日志以及停用和重启命令集中展示,适合部署后快速查阅。

日志格式与时间信息

log_date_format 用来控制时间戳格式,time: true 则会让日志附带时间信息。对于多实例应用或跨天排障,这两项非常实用。

多实例与日志合并

instances: 'max' 表示按可用 CPU 核心尽可能多开实例;combine_logs: true 则用于合并日志输出。是否开启合并,要看你更重视统一查看,还是更希望按实例拆分排查。

轮转与重启策略

rotate_logs: true 是本文的核心设置,表示启用日志分割。配合 cron_restart: "0 0 * * *",可以让应用在每天午夜重启一次,适合需要定期整理运行状态的场景。

另外,max_memory_restart: '1G' 也值得保留。它不直接负责日志分割,但能在内存占用异常时触发重启,避免日志无限增长的同时服务状态已经失控。

用配置启动并检查日志

配置文件准备好之后,直接用它启动应用:

pm2 start ecosystem.config.js

启动完成后,可以用下面的命令查看日志:

pm2 logs

这条命令会输出所有应用日志。如果只想看某个应用,例如配置中的 my-app,可以这样查:

pm2 logs my-app

当日志量已经比较大,但你只关心最近一段输出时,可以限制行数:

pm2 logs my-app --lines 100

这种方式尤其适合线上排错,能直接聚焦最近 100 行变化,而不用从头翻完整文件。

停用与重启应用

日常维护中,最常用的两个动作就是停止和重启:

pm2 stop my-app
pm2 restart my-app

当你调整了配置、更新了代码,或者需要配合日志观察应用状态时,这两条命令会经常用到。结合前面的日志查看命令,可以很快确认重启后是否出现新的报错或异常输出。

这套方案适合什么场景

如果你是在 Ubuntu 上维护一个常驻运行的 Node.js 服务,pm2 这套做法足够覆盖大多数基础日志管理需求。它的优点不在于复杂,而在于把启动、重启、日志输出和日志分割放进了同一套工具链里。

实际使用时,可以先按文中的配置跑通,再根据项目规模细化策略,比如是否保留 combine_logs: true、是否需要每日定时重启、日志文件是否要按目录进一步拆分。只要日志路径、时间格式和轮转逻辑先明确下来,后续排障成本通常会低很多。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多