//统计消息 function getMessageCount(i, messageLogList, msgSendCount, msgSendSuccessfullyCount, callback) { if (i == messageLogList.length) { callback({msgSendCount: msgSendCount, msgSendSuccessfullyCount: msgSendSuccessfullyCount}); } else { var log = messageLogList[i]; if (log.indexOf(‘status=readyToSend’) != -1) { msgSendCount += 1; } if (log.indexOf(‘status=sendPersonalMsgSuccessfully’) != -1 || log.indexOf(‘status=sendGroupMsgSuccessfully’) != -1) { msgSendSuccessfullyCount += 1; } i++; getMessageCount(i, messageLogList, msgSendCount, msgSendSuccessfullyCount, callback); } } 这是我写的一个从日志里面统计的递归方法 当数据过多后提示我RangeError: Maximum call stack size exceeded /opt/project/miyu/miyuProject_test/metalk_api/lib/SendDailyStatistics.js:156 if (log.indexOf(‘status=readyToSend’) != -1) { ^ 想问问有什么好的分析日志的方法吗? 求大神指点一下
你用递归了,v8有stack限制。你可以改成迭代方式
日志分析与 nodejs 无关吧…日志不都是文本文件吗
你可以尝试一下使用云服务来分析和管理日志,我们是个创业公司(uclogs.com),正在做类似的事情,正在招募体验用户: https://cnodejs.org/topic/5445bed79657d9ab12567e6d
@ryanking8215 感谢 我去试试
@alsotang 额 我是想每天定时统计消息 用nodejs写代码操作
日志分析…最近也一直在想这个问题,我想还是把它导入到数据库然后用数据库自带的方法分析吧,直接分析文本太痛苦了。
创建缓存文件,没隔一段时间更新缓存文件,查询时直接从缓存读取,这样子速度快点吧
@StevenStar 我这是一天一查。 查当天的数据 日志每天都有分割的
@sayfly 写python的时候我写过类似的功能,当时是这么做的,有一个进程单独用来update缓存