From 0ca0870caa0c3447e6bc4ecb2ead50a7ff9226c3 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Thu, 26 Nov 2020 09:48:16 -0400 Subject: [PATCH] log endpoint --- config/log.js | 3 ++- src/routes.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/config/log.js b/config/log.js index 03060b5d..7b63b7a8 100644 --- a/config/log.js +++ b/config/log.js @@ -15,7 +15,8 @@ module.exports = (logFileName, logLevel) => { winston.add(new (winston.transports.DailyRotateFile)({ filename: logFileName, datePattern: "yyyy-MM-DD", - json: false, + // https://github.com/winstonjs/winston-daily-rotate-file/issues/188 + json: true, maxSize: 1000000, maxFiles: 7, level: logLevel diff --git a/src/routes.js b/src/routes.js index f77a65c4..2fd43091 100644 --- a/src/routes.js +++ b/src/routes.js @@ -3215,4 +3215,35 @@ module.exports = async ( }) } }) + + ap.get('/api/log', async (_, res) => { + try { + // https://github.com/winstonjs/winston#querying-logs + /** + * @type {import('winston').QueryOptions} + */ + const options = { + from: new Date() - 1 * 60 * 60 * 1000, + until: new Date() + } + + const results = await Common.Utils.makePromise((res, rej) => { + logger.query(options, (err, results) => { + if (err) { + rej(err) + } else { + res(results) + } + }) + }) + + res.status(200).json(results) + } catch (e) { + res + .status(e.message === Common.Constants.ErrorCode.NOT_AUTH ? 401 : 500) + .json({ + errorMessage: e.message + }) + } + }) }