发布网友 发布时间:2022-05-18 18:07
共1个回答
热心网友 时间:2023-10-22 10:45
一、forever记录日志线上系统使用forever来启动服务,最开始就直接使用了forever来记录foreverstart-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日志包,说下怎么配置和分割日志{"appenders":[{"type":"console"},{"type":"dateFile","filename":"logs/access.log","pattern":"-yyyy-MM-dd","category":"normal","level":"LOG"},{"type":"file","filename":"logs/error.log","maxLogSize":2097152,"backup":10,"category":"error"},{"type":"dateFile","filename":"logs/record.log","pattern":"-yyyy-MM-dd","category":"record"}],"replaceConsole":true,"levels":{"error":"error","record":"trace"}}log4j的type:console往控制台输出file文件日志maxLogSize表示当文件超过这个值时切换文件backup:n会循环使用error[1,n].log的文件名dateFile使用这个就会按天切割日志,按天生成文件名access.log-2014-12-14问题:日志文件名和内容会相差一天access.log-2014-12-14的文件里其实记录的是2014-12-15的日志文件,这个暂时还没有找到解决法换了log4j之后会自动切割日志,按天进行保存,内存就一直没暴增了。内存不满就没报警,没了报警整个世界都清净了。