diff --git a/lib/core/logger.js b/lib/core/logger.js index 8f45c6a06..6e8981c95 100644 --- a/lib/core/logger.js +++ b/lib/core/logger.js @@ -4,7 +4,7 @@ const date = require('date-and-time'); const constants = require('../constants'); const DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss:SSS'; -// const LOG_REGEX = /\[(?\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d:\d\d\d)\] (?:\[(?\w*)\]:?)?\s?\s?(?.*)/gmi; +const LOG_REGEX = new RegExp(/\[(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d:\d\d\d)\] (?:\[(\w*)\]:?)?\s?\s?(.*)/gmi); class Logger { constructor(options) { @@ -38,21 +38,21 @@ class Logger { let matches; let logs = []; const logFile = fs.readFileSync(this.logFile, 'utf8'); - //while ((matches = LOG_REGEX.exec(logFile)) !== null) { - // // This is necessary to avoid infinite loops with zero-width matches - // if (matches.index === LOG_REGEX.lastIndex) { - // LOG_REGEX.lastIndex++; - // } + while ((matches = LOG_REGEX.exec(logFile)) !== null) { + // This is necessary to avoid infinite loops with zero-width matches + if (matches.index === LOG_REGEX.lastIndex) { + LOG_REGEX.lastIndex++; + } - // if (matches && matches.groups) { - // logs.push({ - // msg: [matches.groups.msg], - // logLevel: matches.groups.logLevel, - // name: 'embark', - // timestamp: date.parse(matches.groups.date, DATE_FORMAT).getTime() - // }); - // } - //} + if (matches && matches.length) { + logs.push({ + msg: [matches[3]], + logLevel: matches[2], + name: 'embark', + timestamp: date.parse(matches[1], DATE_FORMAT).getTime() + }); + } + } // if 'limit' is specified, get log lines from the end of the log file if(limit && limit > 0 && logs.length > limit){