ver modo log depurar debug consola chrome abrir javascript google-chrome console logging

javascript - log - modo debug chrome



Consola de desarrollador de JavaScript de Chrome: ¿es posible llamar a console.log() sin una nueva línea? (7)

Me gustaría usar console.log () para registrar mensajes sin agregar una nueva línea después de cada llamada a console.log (). es posible?


Algo sobre la idea de @shennan:

function init(poolSize) { var pool = []; console._log = console.log; console.log = function log() { pool.push(arguments); while (pool.length > poolSize) pool.shift(); draw(); } console.toLast = function toLast() { while (pool.length > poolSize) pool.shift(); var last = pool.pop() || []; for (var a = 0; a < arguments.length; a++) { last[last.length++] = arguments[a]; } pool.push(last); draw(); } function draw() { console.clear(); for(var i = 0; i < pool.length; i++) console._log.apply(console, pool[i]); } } function restore() { console.log = console._log; delete console._log; delete console.toLast; } init(3); console.log(1); console.log(2); console.log(3); console.log(4); // 1 will disappeared here console.toLast(5); // 5 will go to row with 4 restore();


En NodeJS puede usar process.stdout.write y puede agregar ''/ n'' si lo desea.

console.log(msg) es equivalente a process.stdout.write(msg + ''/n'') .


La respuesta corta es no.

Pero

Si su caso de uso involucra el intento de registrar datos continuamente cambiantes mientras se evita la saturación de la consola, entonces una forma de lograr esto (en ciertos navegadores) sería usar console.clear() antes de cada salida.

function writeSingleLine (msg) { console.clear(); console.log(msg); } writeSingleLine(''this''); setTimeout( function () { writeSingleLine(''is''); }, 1000); setTimeout( function () { writeSingleLine(''a''); }, 2000); setTimeout( function () { writeSingleLine(''hack''); }, 3000);

Tenga en cuenta que esto probablemente rompería cualquier otra funcionalidad de registro que estaba teniendo lugar dentro de su aplicación.

Descargo de responsabilidad: Yo clasificaría esto como un truco.


No, no es posible. Tendrá que mantener una cadena y concatenar si lo quiere todo en una línea, o poner su salida en otro lugar (por ejemplo, otra ventana).


Puedes poner tantas cosas en arguments como desees:

console.log(''hi'',''these'',''words'',''will'',''be'',''separated'',''by'',''spaces'',window,document)

Obtendrá toda esa salida en una línea con las referencias de objeto en línea y luego podrá desplegar sus inspectores desde allí.


Sí, es posible (consulte la demostración a continuación) - implementando su propia consola virtual en la parte superior de la consola nativa del navegador, y luego sincronizándola con la consola real.

Esto es mucho más fácil de lo que parece:

  1. mantener un búfer de visualización (por ejemplo, un conjunto de cadenas que representan una línea cada una)
  2. llame a console.clear() antes de escribir para borrar cualquier contenido anterior
  3. llama a console.log() (o warn, error, etc.) para llenar la consola con los contenidos de tu buffer de visualización

En realidad, he estado haciendo esto por un tiempo ahora. Una implementación breve y rudimentaria de la idea sería algo en las siguientes líneas, pero aún capaz de animar los contenidos de la consola:

// ================================================= // Rudimentary implementation of a virtual console. // ================================================= var virtualConsole = { lines: [], currentLine: 0, log: function (msg, appendToCurrentLine) { if (!appendToCurrentLine) virtualConsole.currentLine++; if (appendToCurrentLine && virtualConsole.lines[virtualConsole.currentLine]) { virtualConsole.lines[virtualConsole.currentLine] += msg; } else { virtualConsole.lines[virtualConsole.currentLine] = msg; } console.clear(); virtualConsole.lines.forEach(function (line) { console.log(line); }); }, clear: function () { console.clear(); virtualConsole.currentLine = 0; } } // ================================================= // Little demo to demonstrate how it looks. // ================================================= // Write an initial console entry. virtualConsole.log("Loading"); // Append to last line a few times. var loadIndicatorInterval = setInterval(function () { virtualConsole.log(".", true); // <- Append. }, 500); // Write a new line. setTimeout(function () { clearInterval(loadIndicatorInterval); virtualConsole.log("Finished."); // <- New line. }, 8000);

Sin duda tiene sus inconvenientes cuando se mezcla con la interacción directa con la consola, y definitivamente se ve feo, pero ciertamente tiene sus usos válidos, que no podrías lograr sin él.


// Source code for printing 2d array window.onload = function () { var A = [[1, 2], [3, 4]]; Print(A); } function Print(A) { var rows = A.length; var cols = A[0].length; var line = ""; for (var r = 0; r < rows; r++) { line = ""; for (var c = 0; c < cols; c++) { line += A[r][c] + " "; } console.log(line); } }