73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
import { Parse } from 'parse/node';
|
|
import PromiseRouter from '../PromiseRouter';
|
|
import AdaptableController from './AdaptableController';
|
|
import { LoggerAdapter } from '../Adapters/Logger/LoggerAdapter';
|
|
|
|
const MILLISECONDS_IN_A_DAY = 24 * 60 * 60 * 1000;
|
|
|
|
export const LogLevel = {
|
|
INFO: 'info',
|
|
ERROR: 'error'
|
|
}
|
|
|
|
export const LogOrder = {
|
|
DESCENDING: 'desc',
|
|
ASCENDING: 'asc'
|
|
}
|
|
|
|
export class LoggerController extends AdaptableController {
|
|
|
|
// check that date input is valid
|
|
static validDateTime(date) {
|
|
if (!date) {
|
|
return null;
|
|
}
|
|
date = new Date(date);
|
|
|
|
if (!isNaN(date.getTime())) {
|
|
return date;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
static parseOptions(options = {}) {
|
|
let from = LoggerController.validDateTime(options.from) ||
|
|
new Date(Date.now() - 7 * MILLISECONDS_IN_A_DAY);
|
|
let until = LoggerController.validDateTime(options.until) || new Date();
|
|
let size = Number(options.size) || 10;
|
|
let order = options.order || LogOrder.DESCENDING;
|
|
let level = options.level || LogLevel.INFO;
|
|
|
|
return {
|
|
from,
|
|
until,
|
|
size,
|
|
order,
|
|
level,
|
|
};
|
|
}
|
|
|
|
// Returns a promise for a {response} object.
|
|
// query params:
|
|
// level (optional) Level of logging you want to query for (info || error)
|
|
// from (optional) Start time for the search. Defaults to 1 week ago.
|
|
// until (optional) End time for the search. Defaults to current time.
|
|
// order (optional) Direction of results returned, either “asc” or “desc”. Defaults to “desc”.
|
|
// size (optional) Number of rows returned by search. Defaults to 10
|
|
getLogs(options= {}) {
|
|
if (!this.adapter) {
|
|
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
|
|
'Logger adapter is not availabe');
|
|
}
|
|
options = LoggerController.parseOptions(options);
|
|
return this.adapter.query(options);
|
|
}
|
|
|
|
expectedAdapterType() {
|
|
return LoggerAdapter;
|
|
}
|
|
}
|
|
|
|
export default LoggerController;
|