Так что это недавно появилось снова, поэтому я решил вернуться к нему.
Теперь я старше и мудрее, и для меня очевидно, что гораздо лучшее решение, чем то, что я пытался сделать, - это вызывать консольные функции такими, какие они есть, но выборочно заменять их фиктивными функциями, когда уровень понижается.,Это дает мне мелкозернистое ведение журнала и точную отчетность по номеру строки.Некоторые функции были потеряны из моего предыдущего решения, но я думаю, что это приемлемый компромисс.
Вот частичный фрагмент моей новой библиотеки журналирования, которая показывает основное решение
...
levels : ["debug","info","warn","error"],
init : function(minLevel) {
var params = abm.getUrlParams();
minLevel = params["debug"] || minLevel;
//TODO: firebug lite
window.console = window.console || {};
var clear = false;
for (var i=0; i<self.levels.length; i++) {
var level = self.levels[i];
originalFunctions[i] = originalFunctions[i]
|| console[level] || fallback;
if (level && (clear || level===minLevel)) {
console[level] = originalFunctions[i];
clear=true;
} else {
console[level] = suppressed(level);
}
}
}
...
Вы можетесмотрите полную информацию здесь: https://github.com/antiBaconMachine/abm-log