Есть ли способ обмануть/перенаправить трассировку стека Chrome при вызове console.log?

Я нашел этот вопрос, который "близок" к тому, что я ищу:

Как получить результат console.trace() в виде строки в javascript с помощью chrome или firefox?

Однако есть ли способ фактически заменить файл JS (и номер строки), из которого происходит запись журнала?

введите здесь описание изображения

Я направляю все свои отладочные трассировки другим методом, поэтому независимо от того, что я регистрирую/отслеживаю, это всегда отображается как одно и то же file:line# (и после нажатия нет возможности пройти по стеку/коду, как вы можете во время живого сеанс отладки).

Я мог бы попытаться просто зарегистрировать стек Error.captureStackTrace(obj, trace); сразу после данного объекта (поскольку объединение их в одной трассировке будет рассматривать их как строки, а не записи журнала, на которые можно щелкнуть), но я надеюсь, что есть способ захватить Консоль Chrome немного :)


person bigp    schedule 22.01.2015    source источник
comment
Для производственного уровня у меня был другой подход. Вместо того, чтобы пытаться скрыть только части следа. Я взломал консоль, чтобы все, что находится в производстве и имеет console.log trace warn dir и т. д., сохранялось в объекте без фактического вызова console.log. Таким образом, каждая ошибка сохраняется в объекте, который можно либо очистить, либо отправить на наши серверы. Мы сделали это еще и потому, что большинство из нас, разработчиков, страдали от синдрома Туретта, и большинство журналов не были дружественными к бизнесу/пользователю/руководству.   -  person helly0d    schedule 23.01.2015
comment
Кроме того, насколько я знаю, нет другого способа перехватить трассировку стека консоли, чтобы номер файла или строки был другим. Даже если вам удастся это сделать, какой в ​​этом смысл? Во-первых, опытный пользователь (программист) сможет увидеть, что вы захватили консоль, и он сможет захватить консоль на более ранней стадии с помощью букмарклета. Во-вторых, вы никогда не сможете перехватить основные ошибки (например, net::ERR_BLOCKED_BY_CLIENT). Мы попытались отловить сетевые ошибки, чтобы босс не встревожился, что «Посмотрите, есть ошибка», хотя мы ее обрабатывали.   -  person helly0d    schedule 23.01.2015


Ответы (1)


Это может быть не совсем то, что вы искали, но вы можете использовать Image().src для автоматической отправки копий ошибок на ваш сервер, если вы хотите зафиксировать их там для целей отчетности/регистрации?

Вот как один парень делает это с Ext JS, но бит Image().src представляет собой обычный javascript (я думаю!):

http://www.sencha.com/forum/showthread.php?295768-Basic-error-handling-for-Ext-JS-apps

person Marc Fearby    schedule 23.01.2015
comment
Я не думаю, что это то, о чем он на самом деле спрашивал. Он спрашивал, есть ли способ полностью захватить консоль, чтобы обычный пользователь не мог отслеживать стеки журналов отладки или ошибок. - person helly0d; 23.01.2015