Salvare il file console.log in Chrome in un file


Risposte:


98

Avevo bisogno di fare la stessa cosa e questa è la soluzione che ho trovato:

  1. Abilitare la registrazione dalla riga di comando utilizzando i flag:

    --enable-logging --v=1

    Questo registra tutto ciò che Chrome fa internamente, ma registra anche tutti i console.log()messaggi. Il file di registro viene chiamato chrome_debug.loge si trova in User Data Directory.

  2. Filtra il file di registro che ottieni per le righe CONSOLE(\d+).

Si noti che i registri della console non vengono visualizzati con --incognito.


3
sembra che non funzioni sul mio Mac OS, ci sono registri interni ma non Console.log ...
Nico,

7
Ciò non salva le informazioni console.log nel file di registro. In Windows 8.
coderama,

4
Su Mac ho trovato il file di registro su ~ / Library / Application Support / Google / Chrome / chrome_debug.log
vaichidrewar

2
Questo funziona ancora per me su OSX 10.10.3 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1con il registro salvato in~/Library/Application Support/Google/Chrome/chrome_debug.log
mateuscb il

3
Non ottengo altro che i registri interni di Chrome. Le mie console.log()linee non sono in nessun posto in quel file. Qualcuno ha una correzione per questo?
xandermonkey,

187

Buone notizie

Gli strumenti di sviluppo di Chrome ora ti consentono di salvare l'output della console in un file in modo nativo

  1. Apri la console
  2. Pulsante destro del mouse
  3. Seleziona "salva con nome .."

salva la console su file

Istruzioni per gli sviluppatori di Chrome qui .


3
Questo può essere fatto usando una scorciatoia da tastiera o eseguendo un comando sulla console?
Sarthak Singhal,

1
Ecco un elenco di tutte le scorciatoie devTools developer.chrome.com/devtools/docs/shortcuts
adardesign

11
Questo non sembra copiare la traccia dello stack
Michael,

2
Puoi riaprire quel file nella console? Se è così, come lo fai?
Mahathi Vempati il

7
Nota che questo non espande gli oggetti, ma stampa comunque oggetti di grandi dimensioni nella loro forma troncata, ad es {a: 1, b: 2, c: 3, ...}.
Galen Long,

29

Esiste un plugin javascript open source che fa proprio questo, ma per qualsiasi browser - debugout.js

Debugout.js registra e salva console.logs in modo che l'applicazione possa accedervi. Divulgazione completa, l'ho scritto. Formatta i diversi tipi in modo appropriato, può gestire oggetti e matrici nidificati e, facoltativamente, inserire un timestamp accanto a ciascun registro. È inoltre possibile attivare / disattivare la registrazione in tempo reale in un'unica posizione e senza rimuovere tutte le istruzioni di registrazione.


4
Per riferimento, sebbene sembri un ottimo strumento, non catturerà l'output dal browser, come quando il caricamento delle immagini fallisce, o altri output della console integrata, e richiede che tu riscriva le tue istruzioni di log usando una sintassi speciale.
Lukus,

@Lukus certamente non catturerà l'output del browser (per farlo avresti bisogno di una patch di scimmia) ma non è necessaria una sintassi speciale. passare gli stessi argomenti di console.log
inorganik

1
@Inorganik Stavo cercando un modo per i test del selenio per catturare l'output della console, ma verrà utilizzato per un servizio di test, quindi non abbiamo il controllo dei siti Web dell'utente. Penso che il tuo strumento sia interessante, ma richiederebbe a un utente di riscrivere le proprie istruzioni console.log esistenti come bugout.log, questo è ciò che intendevo per sintassi speciale. Sembra così lontano che non esiste un modo cross-browser per farlo una volta.
Lukus,

No, non funzionerà per noi. Dobbiamo salvare il registro dei risultati dei test del complesso sito Web con una grande quantità di script di terze parti, che vengono eseguiti su domini diversi e non possiamo modificarli.
Mike Keskinov,

23

Ho trovato un modo fantastico e semplice per questo.

  1. Nella console: fare clic con il pulsante destro del mouse sull'oggetto registrato della console

  2. Fai clic su "Memorizza come variabile globale"

  3. Vedi il nome della nuova variabile, ad es. VariabileName1

  4. Digita la console: JSON.stringify (variabileNome1)

  5. Copia il contenuto della stringa variabile: ad es. {"A": 1, "b": 2, "c": 3}

inserisci qui la descrizione dell'immagine

  1. Vai ad alcuni editor online JSON: ad esempio https://jsoneditoronline.org/

inserisci qui la descrizione dell'immagine


1
Sembra ingombrante in superficie ma funziona abbastanza bene. Nelle versioni successive, nella parte inferiore dell'output c'è un pulsante "Copia". Lo premo, quindi ho un piccolo script che salva gli Appunti come file .json e si apre in Visual Studio che è molto leggibile. L'unica modifica è che eseguo JSON.stringify (temp1, null, 2) per semplificare la lettura. Anche il trucco di seguito per salvare la console funziona bene.
Wade Hatler,

8

Per un file di registro migliore (senza l'assurdità del debug di Chrome) utilizzare:

--enable-logging --log-level=0

invece di --v=1cui sono troppe informazioni.

Fornirà comunque gli errori e gli avvisi come in genere si vedrebbero nella console di Chrome.

aggiornamento del 18 maggio 2020: in realtà, penso che questo non sia più vero. Non sono riuscito a trovare i messaggi della console all'interno di qualsiasi livello di registrazione.


7

Ciò può essere utile o meno, ma su Windows è possibile leggere il registro della console utilizzando la traccia eventi per Windows

http://msdn.microsoft.com/en-us/library/ms751538.aspx

I nostri test di integrazione vengono eseguiti in .NET, quindi utilizzo questo metodo per aggiungere il registro della console all'output del test. Ho realizzato un progetto di console di esempio per dimostrare qui: https://github.com/jkells/chrome-trace

--enable-logging --v = 1 non sembra funzionare sull'ultima versione di Chrome.



2

Esiste un altro strumento open source che ti consente di salvare tutto l' console.logoutput in un file sul tuo server: JS LogFlush (plug!).

JS LogFlush è una soluzione di registrazione JavaScript integrata che include:

  • sostituzione cross-browser UI-less di console.log - sul lato client.
  • sistema di archiviazione dei log - sul lato server.

dimostrazione


2

Se stai eseguendo un server Apache sul tuo host locale (non farlo su un server di produzione), puoi anche pubblicare i risultati su uno script invece di scriverlo sulla console.

Quindi, invece di console.log, puoi scrivere:

JSONP('http://localhost/save.php', {fn: 'filename.txt', data: json});

Quindi save.phppuoi farlo

<?php

 $fn = $_REQUEST['fn'];
 $data = $_REQUEST['data'];

 file_put_contents("path/$fn", $data);

1
Spero davvero che nessuno lo carichi mai su un server in produzione 🙁. Questo è un pericolo per il server.
Dave Mackintosh,

Non hai letto la prima riga: "Se stai eseguendo un server Apache sul tuo host locale"?
Sostituisce il

Il tuo voto negativo del mio post non è giustificato perché sarebbe incredibilmente sciocco per qualcuno eseguire un server di produzione su "localhost" (dove il JSONP richiede i dati dei post).
Sostituisce il

Non ho mai votato verso il basso la tua risposta, ho semplicemente sottolineato il pericolo che questo script pone se mai caricato su un server disponibile al pubblico.
Dave Mackintosh,

1

Su Linux (almeno) puoi impostare CHROME_LOG_FILE nell'ambiente in modo che Chrome scriva un registro dell'attività della console nel file indicato ogni volta che viene eseguito. Il registro viene sovrascritto ogni volta che viene avviato Chrome. In questo modo, se si dispone di una sessione automatizzata che esegue Chrome, non è necessario modificare la modalità di avvio di Chrome e il registro si trova lì al termine della sessione.

export CHROME_LOG_FILE = chrome.log


0

In questi giorni è molto semplice: fai clic con il pulsante destro del mouse su qualsiasi elemento visualizzato nel registro della console e seleziona Salva con nome e salva l'intero output del registro in un file sul tuo computer.


0

le altre soluzioni in questo thread non funzionavano sul mio mac. Ecco un logger che salva una rappresentazione di stringa in modo intermittente usando ajax. usalo con console.saveinvece diconsole.log

var logFileString="";
var maxLogLength=1024*128;

console.save=function(){
  var logArgs={};

  for(var i=0; i<arguments.length; i++) logArgs['arg'+i]=arguments[i];
  console.log(logArgs);

  // keep a string representation of every log
  logFileString+=JSON.stringify(logArgs,null,2)+'\n';

  // save the string representation when it gets big
  if(logFileString.length>maxLogLength){
    // send a copy in case race conditions change it mid-save
    saveLog(logFileString);
    logFileString="";
  }
};

a seconda di ciò di cui hai bisogno, puoi salvare quella stringa o semplicemente console.loge copiare e incollare. ecco un Ajax per te nel caso tu voglia salvarlo:

function saveLog(data){
  // do some ajax stuff with data.
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200) {}
  }

  xhttp.open("POST", 'saveLog.php', true);
  xhttp.send(data);
}

l' saveLog.phpdovrebbero aggiungere i dati in un file di log da qualche parte. Non avevo bisogno di quella parte, quindi non la includo qui. :)

https://www.google.com/search?q=php+append+to+log

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.