Nodejs线上日志部署

Nodejs 被越来越多的使用到线上系统中,但线上系统没有日志怎么行呢。

一、forever记录日志

我的线上系统使用forever来启动服务,最开始就直接使用了forever来记录

forever start -a -l ./logs/forever.log

 -a 表示追加日志文件
    -l 指定日志文件
    -s 忽略console.log输出的日志记录(使用log4j时要用这个)

最开始还挺好的,所有日志都能记录下来,但是既然是线上环境,日志比较多,跑着跑着就出问题了。

forever.log文件变得越来越大,在我的系统里直接占了3GB的内存,而且全在内存里面,然后服务器就报警了。

然后尝试对forever.log文件进行切割,结果这SB玩意更本没法切割,具体问题:

1.对forever.log 重命名 forever.log.bak 然后新建forever.log,结果日志仍然往forever.log.bak里写,内存一点也没减少

2.直接删除forever.log ,forever不会新建forever.log,占用的内存也一直不释放

似乎是forever一直使用着文件句柄根本不释放就往里面写,根本没法做日志切割。

二、log4j记录日志

log4j是nodejs的一个log日志包,具体使用方法就不说了,只说怎么配置和分割日志

 1 {2     "appenders": [3         { "type" : "console" },4         {5             "type": "dateFile",6             "filename": "logs/access.log",7             "pattern": "-yyyy-MM-dd",8             "category" : "normal",9             "level" : "LOG"
10         },
11         {
12             "type": "file",
13             "filename": "logs/error.log",
14             "maxLogSize": 2097152,
15             "backup": 10,
16             "category": "error"
17         },
18         {
19             "type": "dateFile",
20             "filename": "logs/record.log",
21             "pattern": "-yyyy-MM-dd",
22             "category": "record"
23         }
24     ],
25     "replaceConsole" : true,
26     "levels": {
27         "error":  "error",
28         "record" : "trace"
39     }
30 }

Log4j的type:

  1. console 往控制台输出
  2. file 文件日志 maxLogSize 表示当文件超过这个值时切换文件 backup:n 会循环使用 error[1,n].log 的文件名
  3. dateFile 使用这个就会按天切割日志,按天生成文件名 access.log-2014-12-14

问题:

  • 日志文件名和内容会相差一天 access.log-12-14 的文件里其实记录的是12-15 的日志文件,这个暂时还没有找到解决办法

换了log4j之后会自动切割日志,按天进行保存,内存就一直没暴增了;内存不满就没报警,没了报警整个世界都清净了。

Nodejs线上日志部署相关推荐

  1. rsync实现负载均衡集群文件同步,搭建线上测试部署环境

    此次测试使用三台服务器,CentOS7(1511)版本: 192.168.254.1  web服务器+线上测试环境+源站 192.168.254.2  web服务器 192.168.254.3  we ...

  2. Linux 截取线上日志

    按日期截取线上日志命令 (1)首先,需清楚日志输出的时间日期格式,具体命令如下: sed -n '/6-5 00:00:00/,/6-5 16:30:31/'p catalina.log > t ...

  3. 微信 日志服务器 并发大,微信高性能线上日志系统xlog剖析

    微信高性能线上日志系统xlog剖析 做移动开发的同学经常会遇到一个头疼的问题,就是当用户反馈一些问题,又比较冷僻难以复现的时候(不是Crash),常常就会陷入一筹莫展的境地.因此,很多人就研发了相关的 ...

  4. linux系统中怎么截取某一天的日志,Linux系统如何截取线上日志

    1.按香港云主机日期截取线上日志命令 (1)首先,需清楚日志输出的时间日期格式,具体命令如下: sed -n '/6-5 00:00:00/,/6-5 16:30:31/'p catalina.log ...

  5. 线上环境部署MongoDB的官方建议

    原始出处:http://john88wang.blog.51cto.com/2165294/1386755 本文主要内容来自MongoDB官方文档http://docs.mongodb.org/man ...

  6. 快速定位NodeJs线上问题 - 之火焰图篇

    0x01 背景 前段时间,公司监控群内报警,某个nodeJs项目 CPU 被打满,运维大哥快速重启解决,由于现场没有保留没定位到具体问题.2周后同样的报警又出来了,只能再次祭出重启大法,按照预期果然好 ...

  7. 线上日志集中化可视化管理:ELK

    本文来自网易云社区 作者:王贝 为什么推荐ELK: 当线上服务器出了问题,我们要做的最重要的事情是什么?当需要实时监控跟踪服务器的健康情况,我们又要拿什么去分析?大家一定会说,去看日志,去分析日志.是 ...

  8. 线上日志分析与其他一些脚本

    对一些线上常用的脚本进行了一下总结和说明,免得以后忘记了~ 一·线上发布API集群的代码脚本: #!/bin/bash #Author CCChost=' 10.44.22.113 10.44.22. ...

  9. OpenFalcon线上初步部署

    近期,为保障线上商城9月大促,准备在原有的监控系统基础上,再部署OpenFalcon监控系统,在保障监控可靠性的同时,为后期切换到OpenFalcon监控做准备. 目前正在使用的监控系统为内部开发,目 ...

最新文章

  1. python为什么这么火 知乎-没想到吧!Google 排名第一的编程语言,为什么会这么火?...
  2. elasticsearch 6.x.x 获取客户端方法
  3. 談JS面向對象【靜態與非靜態類】
  4. 吃了一辈子大米,你还在相信水稻种水里是因为喜欢水?
  5. 活动安排(信息学奥赛一本通-T1422)
  6. 全网首发:以字型为例,一维表示的二维数组矩阵,以易理解的方式旋转90、-90
  7. 大战设计模式【10】—— 外观模式
  8. Oracle 客户端下载
  9. Springboot毕设项目公共机房的值班管理系统wyz7b(java+VUE+Mybatis+Maven+Mysql)
  10. windows10如何查看硬盘序列号
  11. BZOJ2339[HNOI2011]卡农——递推+组合数
  12. 神经网络权重是什么意思,神经网络权值和阈值
  13. 红与黑 DFS(JAVA解法)
  14. git由ssh改为http后,HTTP Basic: Access denied无法同步问题解决
  15. 北京信息科技大学计算机录取名单,北京信息科技大学2021年硕士研究生拟录取名单公示...
  16. python之爬虫神器selenium:猫眼电影榜单并进行数据可视化
  17. SuperRecovery超级硬盘数据恢复软件
  18. 2014 计算机会议,2014计算机学科国际会议排名.doc
  19. 网站空间和域名的关系和区别
  20. 大功率信号发生器原理是什么,安泰功率放大器型号推荐!

热门文章

  1. 自制 QQ游戏 连连看 外挂 ~~
  2. 一起学习Windows Phone7开发(十八. Windows Phone7 Toolkit)
  3. php生成随机密码的几种方法
  4. 关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
  5. PyOpenGL之3D界面详解(三)
  6. 【AI 顶会】NIPS2019接收论文完整列表
  7. 【今日CV 计算机视觉论文速览 第126期】Thu, 6 Jun 2019
  8. media player的显示模式 winform
  9. 1218 图片对齐模式
  10. 编辑器hbuilderx的下载与安装 0907