前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nodejs日志管理之日志切割

Nodejs日志管理之日志切割

作者头像
用户2845596
发布2021-01-21 15:11:20
1.6K0
发布2021-01-21 15:11:20
举报
文章被收录于专栏:劝学劝学

Foreback

现在nodejs在服务器上使用越来越广了,常用的框架有express、koa、eggjs等,nodejs进程管理工具是pm2。 下面就说下nodejs在实战中的日志管理

日志管理一般有两种,一种是上传到日志服务器,一种是本地保存。 每个公司实现情况不一样,下面只说下本地保存的方案。

基础pm2的日志切割

使用pm2自带的日志切割插件,pm2-logrotate,

安装
代码语言:javascript
复制
# CLI配置
pm2 set pm2-logrotate: 
代码语言:javascript
复制
// ~/.pm2/module_conf.json
{
    "pm2-logrotate": {
        "compress": "true",
        "rotateInterval": "0 0 * * *",
        "retain": "30",
        
        "workInterval": "7200",
        "max_size": "1G"
    }
}

pm2-logratote安装部署也方便,但在实际使用过程中,经常出现内存使用过高的情况。

logrotate - linux自带的切割工具

logrotate是linux(centos)自带的一款日志切割工具,使用范围上更加宽,不只局限于nodejs的。 不过对于前端工程师而言,还需要额外懂一些linux方面知识。

下面是典型的lorotate的配置文件示例:

代码语言:javascript
复制
# logrotate.conf
rotate 8  # 保留多少历史文件
dateext   # 日志加上时间,默认为文件名后加上-%Y%m%d
#自定义时间格式,更精细的命名可以放在postrotate里
dateformat -%Y%m%d.log  
missingok # 找不到日志可以忽略
notifempty # 空日志不处理
compress  
sharedscripts # 多个日志滚动后,postrotate里的脚本只执行一次,即共享了这个脚本

# 新建日志模式,与下面的复制模式二选一
create
create 0664 root root

# 复制原日志模式
#copytruncate

/data/app-node/logs/app-node-log.log
/data/app-node/logs/app-node-out.log
/data/app-node/logs/app-node-err.log {
        prerotate
            # 把错误日志发送到负责人邮箱
            cat err.log > mail -s 'err' $mailaddress
        endscript

        # 若采用create模式,则有的应用需要重启,比如PM2
        postrotate
                pm2 reload app > /dev/null 2>&1  &
        endscript
}

更具体的配置细节可以看下面的参考文章,这里说下里面create模式与copy模式的细节不同

create

create模式会把之前的log文件重命名,然后再重建一个。前后两个文件名虽然一样,但inode不一样了,所以如果是使用pm2管理,还需要重启下pm2。

两者,我们在创建新log时,会指定文件权限,文件权限需要保证pm2进程是有读写权限的

copy

copy模式相对配置简单些。 实现细节是把Log日志copy一份,再把原先的日志内容清空。

好处是不需要重启Pm2,缺点是从copy到清空这一时间段的日志是会丢失的。

部署

部署时我们可以采用定时运行服务- crontab -e,添加一条定时任务,一般都是选在23:59分进行。

代码语言:javascript
复制
23 59 * * * /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1

参考文章:

  1. support.rackspace.com/how-to/unde…
  2. www.lightxue.com/how-logrota…
  3. github.com/pm2-hive/pm…
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Foreback
  • 基础pm2的日志切割
    • 安装
    • logrotate - linux自带的切割工具
      • create
        • copy
          • 部署
          相关产品与服务
          日志服务
          日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档