Вывести соответствующее сообщение логгера
Помогите пожалуйста подправить таким образом чтобы в массив попадало сообщение от соответствующего метода.
У меня сейчас в сообщении везде выводится: "Unexpected error on the site". Вот код: const createLogger = () => { let type = ''; let message = '' function warn(messageOfWarn) { type = 'warn'; message = messageOfWarn; } function error(messageOfError) { type = 'error'; message = messageOfError; } function log(messageOfLog) { type = 'log'; message = messageOfLog; } function getRecords(type) { return [{ message: message, type: type, dateTime: new Date() }]; } return { warn, error, log, getRecords, } }; // examples const logger1 = createLogger(); logger1.log('User logged in'); logger1.warn('User is tring to ented restricted page'); logger1.error('Unexpected error on the site'); console.log(logger1.getRecords('log')); // ===> [{ message: 'User logged in', type: 'log', dateTime: Date }] console.log(logger1.getRecords('error')); // ===> [{ message: 'Unexpected error on the site', type: 'error', dateTime: Date }] console.log(logger1.getRecords('warn')); // ===> [{ message: 'User is tring to ented restricted page', type: 'warn', dateTime: Date }] |
NovichokJS,
где-то надо хранить данные!!! const createLogger = () => { let type = ''; let message = '' let obj = {} function warn(messageOfWarn) { type = 'warn'; message = messageOfWarn; obj[type] = {type, message} } function error(messageOfError) { type = 'error'; message = messageOfError; obj[type] = {type, message}; } function log(messageOfLog) { type = 'log'; message = messageOfLog; obj[type] = {type, message} } function getRecords(type) { return [{ ...obj[type]??{type, message : ''}, dateTime: new Date() }]; } return { warn, error, log, getRecords, } }; // examples const logger1 = createLogger(); logger1.log('User logged in'); logger1.warn('User is tring to ented restricted page'); logger1.error('Unexpected error on the site'); console.log(logger1.getRecords('log')); // ===> [{ message: 'User logged in', type: 'log', dateTime: Date }] console.log(logger1.getRecords('error')); // ===> [{ message: 'Unexpected error on the site', type: 'error', dateTime: Date }] console.log(logger1.getRecords('warn')); // ===> [{ message: 'User is tring to ented restricted page', type: 'warn', dateTime: Date }] |
нужно чтобы на выходе получался массив с одним объектом формата такого:
[{ message: 'User logged in', type: 'log', dateTime: Date }] Можете пожалуйста упростить это выражение: return [{ ...obj[type]??{type, message : ''}, dateTime: new Date() }]; |
Цитата:
|
Цитата:
|
NovichokJS,
function getRecords(type) { let o = obj[type]; if(!o) o = {type, message : ''}; o.dateTime = new Date(); return [o]; } |
спасибо!. а если я несколько вызовов сделаю метода log вот так:
const logger1 = createLogger(); logger1.log('User logged in'); logger1.warn('User is tring to ented restricted page'); logger1.log('User logged out'); logger1.error('Unexpected error on the site'); то как сделать чтобы на выходе у меня получилось : logger1.getRecords('log'); // ===> [{ message: 'User logged out', type: 'log', dateTime: Date }, { message: 'User logged in', type: 'log', dateTime: Date }] |
ну т.е. чтобы в массив добавлялся еще один соответствующий объект
|
NovichokJS,
const createLogger = () => { let type = ''; let message = ''; let arr = []; function warn(messageOfWarn) { type = 'warn'; message = messageOfWarn; arr.push({type, message}) } function error(messageOfError) { type = 'error'; message = messageOfError; arr.push({type, message}) } function log(messageOfLog) { type = 'log'; message = messageOfLog; arr.push({type, message}) } function getRecords(type) { let a = arr.filter(({type : e}) => e == type); a = a.map(o => (o.dateTime = new Date(), o)); return a; } return { warn, error, log, getRecords, } }; // examples const logger1 = createLogger(); logger1.log('User logged in'); logger1.warn('User is tring to ented restricted page'); logger1.log('User logged out'); logger1.error('Unexpected error on the site'); console.log(logger1.getRecords('log')); // ===> [{ message: 'User logged out', type: 'log', dateTime: Date }, { message: 'User logged in', type: 'log', dateTime: Date }] |
круто, спасибо!
|
Часовой пояс GMT +3, время: 12:30. |