14.06.2022, 19:19
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
Вывести соответствующее сообщение логгера
Помогите пожалуйста подправить таким образом чтобы в массив попадало сообщение от соответствующего метода.
У меня сейчас в сообщении везде выводится: "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 }]
|
|
14.06.2022, 19:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
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 }]
|
|
14.06.2022, 20:05
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
нужно чтобы на выходе получался массив с одним объектом формата такого:
[{ message: 'User logged in', type: 'log', dateTime: Date }]
Можете пожалуйста упростить это выражение:
return [{ ...obj[type]??{type, message : ''}, dateTime: new Date() }];
|
|
14.06.2022, 20:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Сообщение от NovichokJS
|
нужно чтобы на выходе получался массив с одним объектом формата такого:
|
что не так в коде?
|
|
14.06.2022, 20:14
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
Сообщение от рони
|
что не так в коде?
|
у меня при сохранении кода в VSCode разъеденяется знаки вопросов вот так ? ? и соответственно создает ошибку https://prnt.sc/MFfvQI-TdOn6 поэтому и спрашиваю можно ли упростить выражение это без использования знаков вопроса
|
|
14.06.2022, 20:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
NovichokJS,
function getRecords(type) {
let o = obj[type];
if(!o) o = {type, message : ''};
o.dateTime = new Date();
return [o];
}
|
|
14.06.2022, 20:34
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
спасибо!. а если я несколько вызовов сделаю метода 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 }]
|
|
14.06.2022, 20:36
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
ну т.е. чтобы в массив добавлялся еще один соответствующий объект
|
|
14.06.2022, 20:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
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 }]
|
|
14.06.2022, 20:50
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
круто, спасибо!
|
|
|
|