IE11 усекает строку в консоли
У меня есть строка из 20 или 30 строк, которые я бы хотел вывести на консоль в одном вызове console.log. Это отлично работает в Chrome, но IE11 усекает около половины строки в консоли. Любой способ предотвратить это? Строка выглядит примерно так:
-----------------------------------------
Wed Jan 7 20:41:16 GMT-0700 2015 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
-----------------------------------------
41:17:181 - Initiating recording...
41:17:233 - Creating NetStream...
41:17:240 - NetStream created.
41:17:240 - Recording ready.
-----------------------------------------
Wed Jan 7 20:41:16 GMT-0700 2015 NetConnectionQueue - rtmp://AMS2alt.commercialtribe.net/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
-----------------------------------------
41:16:867 - Initializing...
41:16:868 - Creating negotiator...
41:17:175 - Connection success: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:175 - Connection added to queue.
41:17:182 - Connection request recieved...
41:17:183 - Connection request fulfilled.
41:17:452 - Connection success: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:452 - Connection added to queue.
41:18:503 - -----------------------------------------
Wed Jan 7 20:41:16 GMT-0700 2015 NetNegotiator Log
-----------------------------------------
41:16:890 - Attempting: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:174 - Negotiator reset
41:17:194 - Attempting: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:282 - Attempting: rtmp://AMS2alt.commercialtribe.net:443/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:339 - Attempting: rtmp://AMS2alt.commercialtribe.net:80/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:400 - Attempting: rtmpt://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:451 - NetConnection attempt failed: rtmp://AMS2alt.commercialtribe.net:443/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9
41:17:452 - Negotiator reset
Ответы
Ответ 1
Ограничение в 1024 символа для одного сообщения не является совершенно необоснованным. Даже если это так, IE не предлагает никаких средств для изменения этого ограничения.
Из любопытства, почему этот один большой блок, а не отдельные вызовы на console. log()
console. log()
сгруппированы с console. group()
console. group()
?
console.group("Wed Jan 7 20:41:16 GMT-0700 2015 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:181 - Initiating recording...");
console.log("41:17:233 - Creating NetStream...");
console.log("41:17:240 - NetStream created.");
console.log("41:17:240 - Recording ready.");
console.groupEnd();
console.group("Wed Jan 7 20:41:16 GMT-0700 2015 NetConnectionQueue - rtmp://AMS2alt.commercialtribe.net/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:16:867 - Initializing...");
console.log("41:16:868 - Creating negotiator...");
console.log("41:17:175 - Connection success: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:175 - Connection added to queue.");
console.log("41:17:182 - Connection request recieved...");
console.log("41:17:183 - Connection request fulfilled.");
console.log("41:17:452 - Connection success: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:452 - Connection added to queue.");
console.groupEnd();
console.group("Wed Jan 7 20:41:16 GMT-0700 2015 NetNegotiator Log");
console.log("41:16:890 - Attempting: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:174 - Negotiator reset");
console.log("41:17:194 - Attempting: rtmp://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:282 - Attempting: rtmp://AMS2alt.commercialtribe.net:443/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:339 - Attempting: rtmp://AMS2alt.commercialtribe.net:80/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:400 - Attempting: rtmpt://AMS2alt.commercialtribe.net:1935/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:451 - NetConnection attempt failed: rtmp://AMS2alt.commercialtribe.net:443/recorder/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d9");
console.log("41:17:452 - Negotiator reset");
console.groupEnd();
Ответ 2
Я знаю, что это старый вопрос, но я просто пишу на тот случай, если это поможет любому, кто его найдет.
Если вы похожи на меня и просто хотели убедиться, что вы помещаете все нужные данные в строку для простого теста, вы можете сделать что-то подобное. Может быть, немного сложнее, но было полезно, когда у меня была длинная строка, которую мне нужно было проверить, была ли она сформирована правильно и имела ли она правильное содержание Вы можете определенно связать это с console.group(), упомянутым в принятом ответе (canon's).
function consoleLog(str, blockSize) {
// blockSize is a parameter only to support the tests.
if (blockSize === undefined) {
blockSize = 1024;
}
var limit = Math.floor(str.length / blockSize);
for (var k = 0; k < limit+1; k++) {
if (k == limit)
console.log(str.substring(blockSize*k, str.length));
else
console.log(str.substring(blockSize*k, blockSize*(k+1)));
}
}
// Tests.
// Should print:
// aaaaa
// bbbbb
// c
consoleLog('aaaaabbbbbc', 5);
// Should print:
// aaaaa
// bbbbb
consoleLog('aaaaabbbbb', 5);
Ответ 3
Если текст, который вы должны регистрировать, не разбивается на строки, или строки могут быть длиннее лимита, вы можете использовать эту простую функцию для "форматирования" вывода журнала:
function logMessage(title, message) {
// make sure if the 'console' object and its methods are available,
// to avoid issues, like your JS code is broken by logging.
// see: https://stackoverflow.com/a/7742862/704022
if (console && console.log && console.group && console.groupEnd) {
var maxLength = 10; // set to 10 to enable easier testing, should be 1024
console.group(title);
for (var pos = 0; pos < message.length ; pos += maxLength) {
console.log(message.substring(pos, pos + maxLength));
}
console.groupEnd();
}
}
logMessage("Test", "0123456789012345678901234");
Ответ 4
Фолпар: Ты прав. Я видел некоторые противоречивые результаты с сообщениями нескольких групп и думал, что отсутствующий параметр исправит это (позже обнаружил, что это не так). Это происходило только в IE11 и, похоже, является условием гонки, присущим IE. Если я поставлю задержку в 100 мс между регистрацией сообщений, проблема никогда не возникнет.
Существует ссылка на groupEnd, имеющий этот параметр, но, похоже, он изолирован от IE, и я не нашел ни одного сценария, где его использование имеет значение. https://technet.microsoft.com/en-us/dn265070(v=vs.80)