Javascript-переопределение консоли.войти и сохранить старую функцию
Я хотел бы переопределить консоль.войдите и вызовите его на моей новой функции.
Я пробую что-то вроде этого, но я получаю Uncaught TypeError: Illegal invocation
:
console.log = function() {
this.apply(window, arguments);
}.bind(console.log);
console.log('as');
Это моя цель:
console.error(exception);
надо сделать:
console.error = function() {
if (typeof exception.stack !== 'undefined') {
console.error(exception.stack);
} else {
console.error.apply(windows, arguments);
}
}.bind(console.error);
console.error('as');
console.error({stack: 'my stack....'});
изменить: На самом деле, он работает в firefox, а не в Chrome... Это ошибка в Chrome:https://code.google.com/p/chromium/issues/detail?id=167911
5 ответов
У вас может быть что-то вроде этого:
console.error = (function() {
var error = console.error;
return function(exception) {
if (typeof exception.stack !== 'undefined') {
error.call(console, exception.stack);
} else {
error.apply(console, arguments);
}
}
})();
лучший способ достичь того, чего вы хотите :
// define a new console
var console=(function(oldCons){
return {
log: function(text){
oldCons.log(text);
// Your code
},
info: function (text) {
oldCons.info(text);
// Your code
},
warn: function (text) {
oldCons.warn(text);
// Your code
},
error: function (text) {
oldCons.error(text);
// Your code
}
};
}(window.console));
//Then redefine the old console
window.console = console;
попробуйте это:
var console={
log: function(v){
alert(v);
}
};
console.log('hello world');
UPD:
проверить это:
var originalConsole={
log: (function(c){
return function(v){
c.log(v);
};
}(window.console))
};
var console={
log: function(v){
originalConsole.log('_original_');
originalConsole.log(v);
}
};
console.log('hello world');
originalConsole
хранит необходимые методы оригинала
Я бы рекомендовал использовать: https://github.com/sunnykgupta/jsLogger
характеристики:
- он спокойно отменяет консоль.бревно.
- заботится, если консоль недоступна (О да, вам нужно учитывать это тоже.)
- хранит все журналы (даже если они погашены) для последующего извлечения.
- обрабатывает основные функции консоли, такие как
log
,warn
,error
,info
.
открыт для изменений и будет обновляться всякий раз, когда появляются новые предложения.
отказ от ответственности: Я являюсь автором плагина.