2012-04-18 6 views
6

In einem Schulprojekt ich laufen einige Javascript, die über das Konsolenfenster eingegeben und von dort ausgeführt werden. Dieses Skript manipuliert die Webseite und gibt die Ergebnisse an die Konsole aus.Store-Konsole in Chrome dauerhaft anmelden

PROBLEM: Behalten Sie/speichern Sie diese Ergebnisse auf eine dauerhafte Art und Weise, die nicht weggeht, wenn der Browser geschlossen wird, das Skript nicht funktioniert oder die Seite neu geladen wird oder wenn möglich ein PC-Absturz.

Ich dachte an die Verwendung von Frameworks wie Log4js oder jStorage (jQuery Storage), aber da dies nicht meine Website ist, die ich manipuliere, kann ich der Seite keinen Code oder Markup hinzufügen.

Gibt es eine Möglichkeit, dies zu tun?

HINWEIS: Es ist nicht kritisch, dass ich die Ergebnisse auf der Konsole protokolliere, ich könnte sie irgendwo hinschicken oder etwas anderes mit ihnen machen, wenn das die Protokollierung erleichtert.

Danke.

+0

Chrome Das Konsolenprotokoll kann beim erneuten Laden der Seite beibehalten werden. Dies ist eine integrierte Option. – katspaugh

+0

Danke. Könnte nützlich sein, wenn ich die Disk-Logging-Funktion –

+0

Schade, dass OP nie eine Antwort akzeptiert – Mawg

Antwort

1

Verwendung console.error(arg); - es wird die Konsole Nachricht in den Browser des stderr (Ich bin mir ziemlich sicher, dass es so tun wird in der Release-Builds, auch.) Senden

Starten Sie Ihren Browser über die Befehlszeile und leiten Sie Ihre stderr in eine Datei (etwas in der Art von chrome 2>errlog).

+0

Sie meinen, das Argument folgende --args sollte 2> errlog sein, was bedeutet, dass Protokolle der Ebene 2 (Fehler) in der Datei protokolliert werden Fehler? Irgendwelche Idee, wo diese Datei gespeichert werden würde? Ich bin auf einem Mac. –

+0

'2> errlog' bedeutet" Umleitung stderr (die einen Handle von 2 hat) in eine Datei namens 'errlog' ". Sie können einen beliebigen Dateinamen angeben (einschließlich des vollständigen Pfads). –

+1

Ich habe einen vollständigen Pfad angegeben und nach dem Neustart von Chrome wurde die Datei erstellt, was ein gutes Zeichen ist. Trotzdem, nachdem ich einige console.error (args) ausgeführt habe, die mir das Argument in rotem Text anzeigen, wird es nicht zur Textdatei hinzugefügt. Die einzige Zeile in der Textdatei ist folgende: [0418/164110: INFO: breakpad_mac.mm (148)] Breakpad deaktiviert Dies ist mein AppleScript-Skript zum Öffnen von Chrome mit den Argumenten: do Shell-Skript "/ Anwendungen/Google \\ Chrome.app/Contents/MacOS/Google \\ Chrome --enable-logging --v = 1 2>/Benutzer/* myusername */Dokumente/errlog.txt " –

8

Wenn Sie automatisch wollen alles speichern in Chrome-Konsole Sie haben Chrome mit diesen Optionen auszuführen:

--enable-logging --v=1 

Es wird das vollständige Protokoll des Chrom in seinem Datenverzeichnis speichern (beachten Sie, dass die Datei sein bei jedem Lauf überschrieben). Mehr Details here.

Alternative Möglichkeit: Installieren Sie das Dienstprogramm Sawbuck, um Chrome-Protokolle zu verwalten.

+0

Danke, ich werde das überprüfen! –

+0

Ich kann nicht scheinen, um die Protokolldatei zu finden. Irgendeine Idee, wo es sich befindet? Ich bin auf einem Mac, überprüfte den Lieferumfang der Chrome.app. –

+0

Es sollte auf ~/Library/Application Support/Google/Chrome/Default, trotzdem überprüfen http://www.chromium.org/for-testers/enable-logging –

7

Hier ist eine kleine Funktion, die Protokolle in die WebStorage (bleibt über Browser-Sitzungen) speichert:

console.plog = function() { 
    var key = Date.now(); 
    var value = JSON.stringify([].slice.call(arguments)); 
    localStorage.setItem(key, value); 
    console.log.apply(console, arguments); 
} 

Zum Wiederherstellen der Protokolle, dann würden Sie den folgenden Ausdruck laufen haben:

(function restoreLogs() { 
    var timestamps = Object.keys(localStorage).sort(); 
    timestamps.forEach(function (ts) { 
     var logArgs = JSON.parse(localStorage.getItem(ts)); 
     console.log.apply(console, logArgs); 
    }); 
}());