zoukankan      html  css  js  c++  java
  • 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-2014-12-14 的文件里其实记录的是 2014-12-15 的日志文件,这个暂时还没有找到解决办法

    换了log4j之后会自动切割日志,按天进行保存,内存就一直没暴增了。

    内存不满就没报警,没了报警整个世界都清净了。

  • 相关阅读:
    2018年第九届蓝桥杯【C++省赛B组】第二题 明码
    2018年第九届蓝桥杯【C++省赛B组】第三题 乘积尾零
    2018年第九届蓝桥杯【C++省赛B组】第四题 测试次数
    L2-023 图着色问题
    L2-011 玩转二叉树
    获取当前的时间,转化为char[]格式unix时间戳
    创建子进程
    strerror
    gdb
    gcc
  • 原文地址:https://www.cnblogs.com/feng_013/p/4166179.html
Copyright © 2011-2022 走看看