当前位置:

首页 > 编程开发 > Ubuntu Node.js日志如何实现自动化处理

Ubuntu Node.js日志如何实现自动化处理

在Ubuntu环境下,Node.js日志自动化处理可通过logrotate实现轮转压缩清理,利用pm2内置日志管理,借助rsyslog集中收集,或采用ELKStack等工具进行高级分析,此外还可通过cron定时任务或脚本定期清理旧日志,从而有效管理日志文件避免磁盘空间不足。

本文目录

    在Ubuntu环境下,Node.js日志的自动化处理有几种成熟的方案,这里逐一说明。核心思路无非是轮转、压缩、清理,以及集中管理,但具体怎么落地,还得看应用场景和部署方式。

    Ubuntu Node.js日志如何实现自动化处理

    1. 使用logrotate工具(系统原生推荐)

    logrotate是Ubuntu系统自带的日志管理工具,能自动完成日志轮转、压缩、清理等操作,算是Node.js日志处理的基础方案。安装很简单,如果没装,运行sudo apt-get install logrotate就行,不过Ubuntu通常默认已经预装了。

    接下来,在/etc/logrotate.d/目录下新建一个nodejs文件,比如sudo nano /etc/logrotate.d/nodejs,然后添加配置,注意根据实际路径调整。配置内容如下:

    /path/to/your/nodejs/logs/*.log {
        daily                   # 每天轮转一次(可选:weekly/monthly)
        rotate 7                # 保留最近7个轮转日志(避免无限堆积)
        compress                # 使用gzip压缩旧日志(节省空间)
        delaycompress           # 延迟压缩(如第8个日志才压缩第1个,减少IO压力)
        missingok               # 若日志文件不存在,不报错继续执行
        notifempty              # 若日志为空,不进行轮转
        create 0640 root adm    # 轮转后创建新日志文件,权限0640,属主root、属组adm
    }

    配置完成后,可以用sudo logrotate -f /etc/logrotate.d/nodejs手动触发轮转,测试配置是否正确。logrotate默认通过/etc/cron.daily/logrotate每日自动执行,所以一般不需要额外配置。

    2. 利用pm2的内置日志管理(适合pm2部署的应用)

    如果使用pm2管理Node.js进程,它的内置日志模块可以直接实现日志轮转,省去额外工具。安装pm2:sudo npm install pm2 -g,启动应用时指定日志路径:

    pm2 start app.js --name "my-app" \
        --out-file /var/log/nodejs/my-app-out.log   # 标准输出日志路径
        --error-file /var/log/nodejs/my-app-err.log # 错误输出日志路径

    配置轮转参数,可以通过pm2 set pm2:logrotate命令,或者创建ecosystem.config.js文件。例如,在ecosystem.config.js中添加:

    module.exports = {
      apps: [{
        name: 'my-app',
        script: 'app.js',
        out_file: '/var/log/nodejs/my-app-out.log',
        error_file: '/var/log/nodejs/my-app-err.log',
        log_date_format: 'YYYY-MM-DD HH:mm Z',  // 日志时间格式
        time: true,              // 在日志中添加时间戳
        merge_logs: true,        // 合并stdout/stderr
        max_size: '10M',         // 单个日志文件最大10MB
        max_files: 7             // 保留7个历史日志文件
      }]
    };

    启动应用时加载配置:pm2 start ecosystem.config.js。

    3. 结合rsyslog/syslog-ng集中收集(分布式场景)

    对于多服务器部署的Node.js应用,可以通过rsyslog/syslog-ng将日志集中收集到一台服务器,便于统一管理。安装rsyslog:sudo apt-get install rsyslog(Ubuntu默认已安装)。

    配置rsyslog收集Node.js日志:编辑/etc/rsyslog.d/50-nodejs.conf(新建文件),添加以下内容,将Node.js日志转发到指定文件:

    if $programname == 'node' then /var/log/nodejs/nodejs.log
    & stop  # 停止后续规则处理,避免重复记录

    重启rsyslog服务:sudo systemctl restart rsyslog,使配置生效。此时Node.js的标准输出/错误日志会被rsyslog捕获到/var/log/nodejs/nodejs.log,再结合logrotate对该文件进行轮转即可。

    4. 第三方日志管理工具(高级分析与可视化)

    对于需要深度分析、可视化或长期存储的场景,可以使用ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog等工具。这里以ELK Stack为例。

    安装组件:sudo apt-get install elasticsearch logstash kibana(需调整Ja va版本以满足要求)。配置Logstash收集Node.js日志:创建/etc/logstash/conf.d/nodejs.conf,内容如下:

    input {
      file {
        path => "/var/log/nodejs/*.log"  # 日志文件路径
        start_position => "beginning"    # 从文件开头读取(首次配置时需开启)
        sincedb_path => "/dev/null"      # 忽略sincedb文件(测试用)
      }
    }
    
    filter {
      # 可选:添加过滤器解析日志(如grok解析JSON格式)
      grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:logmessage}" }
      }
      date {
        match => [ "timestamp", "ISO8601" ]
      }  # 转换时间格式
    }
    
    output {
      elasticsearch { hosts => ["localhost:9200"] }  # 发送到Elasticsearch
      stdout { codec => rubydebug }  # 控制台输出(测试用)
    }

    启动服务:sudo systemctl start elasticsearch logstash kibana,通过http://localhost:5601访问Kibana,创建索引模式(如nodejs-*)即可可视化日志。

    5. 自动化清理旧日志(补充方案)

    除了logrotate的rotate参数,还可以通过cron定时任务或Node.js脚本定期清理过期日志(比如超过30天的日志)。

    cron定时任务:编辑当前用户的crontab(crontab -e),添加以下内容,每天凌晨1点删除7天前的.log文件:

    0 1 * * * find /path/to/your/nodejs/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;

    Node.js脚本清理:创建clean_logs.js,内容如下:

    const fs = require('fs');
    const path = require('path');
    
    const logDir = '/path/to/your/nodejs/logs';
    const maxAge = 7 * 24 * 60 * 60 * 1000; // 7天的毫秒数
    
    fs.readdir(logDir, (err, files) => {
      if (err) throw err;
      files.forEach(file => {
        const filePath = path.join(logDir, file);
        fs.stat(filePath, (err, stats) => {
          if (err) throw err;
          if (stats.isFile() && Date.now() - stats.mtime > maxAge) {
            fs.unlink(filePath, err => {
              if (err) throw err;
              console.log(`Deleted: ${filePath}`);
            });
          }
        });
      });
    });

    通过cron执行该脚本:0 2 * * * /usr/bin/node /path/to/clean_logs.js。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Ubuntu
    相关文章 更多
    Ubuntu命令行入门:打开终端并验证文件目录操作
    Ubuntu命令行入门:打开终端并验证文件目录操作

    本教程指导Ubuntu新手打开终端,通过pwd、ls、cd、mkdir和touch命令完成基础文件目录操作。适用于桌面版、虚拟机及WSL环境,提供从查看路径到创建测试文件的完整验证步骤,帮助读者建立命令行操作的安全意识与正确习惯。

    在VMware中安装Ubuntu并验证启动的完整步骤
    在VMware中安装Ubuntu并验证启动的完整步骤

    本文提供在VMware中安装Ubuntu并验证启动的完整流程。适用于首次练习Linux或搭建开发环境的用户。按步骤完成虚拟机创建、ISO挂载、硬件分配与安装后,可通过终端命令确认版本、内核与网络状态,确保系统可正常使用。

    Ubuntu 26.04 将显著提升英伟达图形显卡在 Wayland 环境下的性能
    Ubuntu 26.04 将显著提升英伟达图形显卡在 Wayland 环境下的性能

    Ubuntu26.04LTS针对英伟达显卡在Wayland+GNOME环境进行性能调优,通过修改gbm_surface_lock_front_buffer函数,将帧渲染等待时间从毫秒级降至微秒级,显著提升UI响应和画面流畅度。该补丁已作为发行版专属补丁集成,确保LTS用户无需等待上游整合即可获得优化体验。

    Ubuntu Touch 24.04-2.0 Beta 发布:适配索尼 Xperia X 等手机 提升上网体验
    Ubuntu Touch 24.04-2.0 Beta 发布:适配索尼 Xperia X 等手机 提升上网体验

    UbuntuTouch24.04-2.0Beta发布,底层升级至Ubuntu24.04,浏览器引擎从Chromium87跃升至134,网页兼容性显著提升;新增屏幕刘海区域自动适配、截图编辑器、网络指示器改进、移动数据可靠性增强、数据加密稳定,并新增NothingPhone(1)等设备支持。

    Ubuntu如何查看系统防火墙规则
    Ubuntu如何查看系统防火墙规则

    ufw status仅显示高层策略和显式添加的规则(如“80 ALLOW Anywhere”),不反映默认策略绕过、IPv6独立规则、Docker等直写nftables的bypass规则,也无法体现本地回环流量不受管控等底层细节。Ubuntu 默认用 ufw 管理防火墙,但规则实际由 nftable

    Ubuntu如何更换锁屏背景图片
    Ubuntu如何更换锁屏背景图片

    锁屏背景和桌面壁纸之所以不同,是因为GNOME默认会复制桌面壁纸,然后强制叠加高斯模糊和亮度调整效果,这个效果是由lockDialogGroup的CSS来控制的。要是想去除模糊,建议使用Control Blur Effect On Lock Screen扩展,把Adjust Sigma设置为0就行。

    UbuntuSwapper在服务器上应用效果如何
    UbuntuSwapper在服务器上应用效果如何

    Ubuntu Swapper(一般就是指Ubuntu的交换分区或者交换文件)在服务器上的应用成效,是由多个因素共同决定的,像服务器的硬件配置情况、工作负载的类型以及交换空间的大小和具体配置等。下面为大家带来一些有关Ubuntu Swapper在服务器上应用效果的一般性评价:正面效果内存管理:交换空间

    Ubuntu如何配置命令行模式下的中文支持
    Ubuntu如何配置命令行模式下的中文支持

    根本原因是纯命令行tty默认不支持UTF-8及中文字体渲染,locale设置仅影响字符解析逻辑,不解决字体绘制问题;图形终端自带UTF-8渲染,而tty需借助fbterm等工具实现中文显示。为什么终端里中文显示为问号或方块 纯命令行(tty,例如通过Ctrl+Alt+F3进入的界面)默认不会加载UT

    如何通过Tomcat日志提升Ubuntu服务器性能
    如何通过Tomcat日志提升Ubuntu服务器性能

    通过分析Tomcat日志来提升Ubuntu服务器性能是一个很好的方法。以下是一些步骤和建议,帮助你通过Tomcat日志来优化服务器性能:1. 收集日志首先,得保证你的Tomcat服务器有详细的日志记录配置。在conf/logging.properties文件里,你可以对日志级别和输出格式进行调整。o

    Ubuntu如何设置具体的命令行配色
    Ubuntu如何设置具体的命令行配色

    直接修改PS1是最为可控且轻量的方法。因为GNOME Terminal主题难以区分提示符、命令输入与输出,而PS1搭配ANSI转义码能够精准地为各个字段上色,并且需要用[ ]进行包裹,以防止光标出现错位的情况。直接改 PS1 是最可控、最轻量的方式,不需要装框架或改终端全局配色。 为什么不用改 GN

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。