Chrome में कंसोल.लॉग को एक फ़ाइल में सहेजें


173

क्या Chrome में किसी फ़ाइल में कंसोल.लॉग आउटपुट को सहेजने का कोई तरीका है? या पाठ को कंसोल से कॉपी कैसे करें?

मान लीजिए कि आप कुछ घंटों के कार्यात्मक परीक्षण कर रहे हैं और आपको Chrome में कंसोल.लॉग आउटपुट की हजारों लाइनें मिल गई हैं। आप इसे कैसे बचाते हैं या इसे निर्यात करते हैं?


जवाबों:


98

मुझे वही काम करने की ज़रूरत थी और यही वह समाधान है जो मैंने पाया:

  1. झंडे का उपयोग करके कमांड लाइन से लॉगिंग सक्षम करें :

    --enable-logging --v=1

    यह सब कुछ लॉग करता है क्रोम आंतरिक रूप से करता है, लेकिन यह सभी console.log()संदेशों को भी लॉग करता है । लॉग फ़ाइल कहा जाता है chrome_debug.logऔर में स्थित है User Data Directory

  2. उन लॉग फ़ाइल को फ़िल्टर करें जिन्हें आप लाइनों के लिए प्राप्त करते हैं CONSOLE(\d+)

ध्यान दें कि कंसोल लॉग्स के साथ दिखाई नहीं देता है --incognito


3
ऐसा लगता है कि यह मेरे मैक ओएस पर काम नहीं करता है, आंतरिक लॉग हैं, लेकिन कोई कंसोल नहीं है ...
निको

7
यह कंसोल.लॉग जानकारी लॉग फ़ाइल में सहेजता नहीं है। विंडोज 8. में
कोडरमा

4
मैक पर मुझे लॉग फाइल मिली ~ ~ लाइब्रेरी / एप्लीकेशन सपोर्ट / गूगल / क्रोम / chrome_debug.log
vaichidrewar

2
यह अभी भी मेरे लिए OSX 10.10.3 पर /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1लॉग-इन में सहेजे गए लॉग के साथ काम करता है~/Library/Application Support/Google/Chrome/chrome_debug.log
mateuscb

3
मुझे आंतरिक क्रोम लॉग के अलावा कुछ नहीं मिलता है। मेरी console.log()पंक्तियाँ उस फ़ाइल में कहीं नहीं हैं। किसी को भी इस के लिए एक तय है?
xandermonkey

187

खुशखबरी

Chrome देव टूल अब आपको कंसोल आउटपुट को मूल रूप से फ़ाइल में सहेजने की अनुमति देता है

  1. कंसोल खोलें
  2. दाएँ क्लिक करें
  3. "इस रूप में सहेजें .." चुनें

फ़ाइल करने के लिए कंसोल सहेजें

Chrome डेवलपर निर्देश यहां दिए गए हैं


3
क्या यह कीबोर्ड शॉर्टकट का उपयोग करके या कंसोल पर कमांड चलाने से किया जा सकता है?
सार्थक सिंघल

1
यहाँ सभी devTools शॉर्टकट्स की एक सूची दी गई है developer.chrome.com/devtools/docs/shortcuts
adardesign

11
यह स्टैक ट्रेस कॉपी करने के लिए प्रतीत नहीं होता है
माइकल

2
क्या आप उस फ़ाइल को फिर से कंसोल में खोल सकते हैं? यदि हां, तो आप ऐसा कैसे करते हैं?
महाथि वेम्पति

7
ध्यान दें कि यह वस्तुओं का विस्तार नहीं करेगा - यह अभी भी बड़ी वस्तुओं को उनके काटे गए रूप में प्रिंट करेगा, जैसे {a: 1, b: 2, c: 3, ...}
गैलन लॉन्ग

29

एक ओपन-सोर्स जावास्क्रिप्ट प्लगइन है जो सिर्फ यही करता है, लेकिन किसी भी ब्राउज़र के लिए - debugout.js

Debugout.js रिकॉर्ड्स और कंसोल को सहेजते हैं। इसलिए आपके एप्लिकेशन उन्हें एक्सेस कर सकते हैं। पूरा खुलासा, मैंने इसे लिखा था। यह विभिन्न प्रकारों को उपयुक्त रूप से प्रारूपित करता है, नेस्टेड ऑब्जेक्ट्स और सरणियों को संभाल सकता है, और वैकल्पिक रूप से प्रत्येक लॉग के बगल में टाइमस्टैम्प लगा सकता है। आप एक स्थान पर लाइव-लॉगिंग को भी चालू कर सकते हैं, और अपने सभी लॉगिंग स्टेटमेंट को हटाए बिना।


4
संदर्भ के लिए, हालांकि यह एक महान उपकरण की तरह दिखता है, यह ब्राउज़र से आउटपुट कैप्चर नहीं करेगा, जैसे कि छवि लोड विफल होने पर, या अन्य अंतर्निहित कंसोल आउटपुट में, और इसके लिए आवश्यक है कि आप एक विशेष वाक्यविन्यास का उपयोग करके अपने लॉग स्टेटमेंट को फिर से लिखें।
लुकस

@ ल्यूक यह निश्चित रूप से ब्राउज़र आउटपुट पर कब्जा नहीं करेगा (आपको ऐसा करने के लिए एक बंदर पैच की आवश्यकता होगी) लेकिन कोई विशेष वाक्यविन्यास की आवश्यकता नहीं है। एक ही आर्ग पारित रूप में आप console.log हैं
inorganik

1
@ इनऑर्गनिक मैं कंसोल आउटपुट पर कब्जा करने के लिए सेलेनियम परीक्षणों के लिए एक रास्ता खोज रहा था, लेकिन इसका उपयोग परीक्षण सेवा के लिए किया जाएगा ताकि हमारे पास उपयोगकर्ता की वेबसाइटों का नियंत्रण न हो। मुझे लगता है कि आपका टूल अच्छा है, लेकिन इसके लिए उपयोगकर्ता को अपने मौजूदा कंसोल को फिर से लिखना होगा। बगआउट.लॉग के रूप में स्टेटमेंट्स, यह वही है जो मुझे विशेष वाक्यविन्यास से मतलब है। यह अब तक प्रतीत होता है कि इस बार करने के लिए कोई क्रॉस-ब्राउज़र तरीका नहीं है।
लुकस

नहीं, यह हमारे लिए काम नहीं करेगा। हमें 3 जी पार्टी स्क्रिप्ट की बड़ी राशि के साथ जटिल वेबसाइट के परीक्षण के परिणाम को बचाने की आवश्यकता है, जो विभिन्न डोमेन पर चलती है और हम उनमें से अधिकांश को नहीं बदल सकते।
माइक केसकिनोव

23

मैंने इसके लिए एक शानदार और आसान तरीका ढूंढा है।

  1. कंसोल में - कंसोल लॉग की गई वस्तु पर राइट क्लिक करें

  2. 'वैश्विक चर के रूप में स्टोर' पर क्लिक करें

  3. नए चर का नाम देखें - जैसे यह चर है

  4. कंसोल में टाइप करें: JSON.stringify (variableName1)

  5. चर स्ट्रिंग सामग्री की प्रतिलिपि बनाएँ: उदा {"a": 1, "b": 2, "c": 3}

यहां छवि विवरण दर्ज करें

  1. कुछ JSON ऑनलाइन संपादक पर जाएं : उदा https://jsoneditoronline.org/

यहां छवि विवरण दर्ज करें


1
सतह पर भद्दा लगता है लेकिन यह बहुत अच्छी तरह से काम करता है। बाद के संस्करणों में, आउटपुट के नीचे "कॉपी" बटन होता है। मैं बस इसे दबाता हूं, फिर एक छोटी सी स्क्रिप्ट होती है जो क्लिपबोर्ड को एक .json फ़ाइल के रूप में सहेजती है और विजुअल स्टूडियो में खुलती है जो बहुत पठनीय है। एकमात्र बदलाव यह है कि मैं JSON.stringify (temp1, null, 2) को पढ़ना आसान बनाता हूं। कंसोल को बचाने के लिए नीचे दिया गया ट्रिक अच्छी तरह से काम करता है।
वेड हैटलर

8

बेहतर लॉग फ़ाइल के लिए (क्रोम-डिबग बकवास के बिना) का उपयोग करें:

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

--v=1जिसके बजाय सिर्फ बहुत अधिक जानकारी है।

यह अभी भी त्रुटियों और चेतावनियों को प्रदान करेगा जैसे आप आमतौर पर क्रोम कंसोल में देखेंगे।

अद्यतन 18 मई, 2020: वास्तव में, मुझे लगता है कि यह अब सच नहीं है। मुझे सांत्वना संदेश नहीं मिल रहे हैं जो कुछ भी इस लॉगिंग स्तर के भीतर है।


7

यह मददगार हो सकता है या नहीं भी हो सकता है लेकिन विंडोज पर आप विंडोज के लिए ईवेंट ट्रेसिंग का उपयोग करके कंसोल लॉग पढ़ सकते हैं

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

हमारे एकीकरण परीक्षण .NET में चलते हैं इसलिए मैं इस पद्धति का उपयोग कंसोल परीक्षण को हमारे परीक्षण आउटपुट में जोड़ने के लिए करता हूं। मैंने यहां प्रदर्शित करने के लिए एक नमूना कंसोल प्रोजेक्ट बनाया है: https://github.com/jkells/chrome-trace

--enable-logging --v = 1 Chrome के नवीनतम संस्करण में काम नहीं करता है।


3

बहुत सारे अच्छे उत्तर, लेकिन सिर्फ JSON.stringify (your_variable) का उपयोग क्यों न करें? फिर कॉपी और पेस्ट के माध्यम से सामग्री लें (बाहरी उद्धरण हटाएं)। मैंने उसी उत्तर को यहां भी पोस्ट किया: किसी कंसोल (ऑब्जेक्ट) के आउटपुट को किसी फाइल में कैसे सेव करें?


1
के बारे में मुद्दों के लिए " Uncaught TypeError: JSON के लिए परिपत्र संरचना परिवर्तित " , हो सकता है यह मदद कर सकता है।
KtX2SkD

2

एक अन्य ओपन-सोर्स टूल है जो आपको console.logअपने सर्वर पर एक जेएस लॉगफ्लश (प्लग) - फ़ाइल के सभी आउटपुट को सहेजने की अनुमति देता है ।

JS LogFlush एक एकीकृत जावास्क्रिप्ट लॉगिंग समाधान है जिसमें शामिल हैं:

  • क्रॉस-ब्राउज़र यूआई-कम प्रतिस्थापन के कंसोल.लॉग - क्लाइंट की तरफ।
  • लॉग भंडारण प्रणाली - सर्वर की ओर।

डेमो


2

यदि आप अपने लोकलहोस्ट पर अपाचे सर्वर चला रहे हैं (उत्पादन सर्वर पर ऐसा न करें), तो आप इसे कंसोल पर लिखने के बजाय एक स्क्रिप्ट पर परिणाम पोस्ट कर सकते हैं।

इसके बजाय console.log, आप लिख सकते हैं:

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

फिर save.phpऐसा कर सकते हैं

<?php

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

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

1
मुझे सच में उम्मीद है कि कोई भी इसे उत्पादन में सर्वर पर अपलोड नहीं करेगा ever यह सर्वर के लिए खतरा है।
डेव मैकिन्टोश

क्या आपने पहली पंक्ति नहीं पढ़ी: "यदि आप अपने स्थानीयहोस्ट पर अपाचे सर्वर चला रहे हैं"?
सुपरसन

मेरे पोस्ट का आपका डाउन वोट उचित नहीं है, क्योंकि यह किसी के लिए "लोकलहोस्ट" (जहां JSONP अनुरोध डेटा पोस्ट करता है) पर एक प्रोडक्शन सर्वर चलाने के लिए अविश्वसनीय रूप से मूर्खतापूर्ण होगा।
सुपरसन

मैंने कभी भी आपके जवाब को वोट नहीं दिया, मैंने केवल इस स्क्रिप्ट के खतरे को इंगित किया अगर कभी जनता के लिए उपलब्ध सर्वर पर अपलोड किया जाए।
डेव मैकिन्टोश

1

लिनक्स पर (कम से कम) आप क्रोम में वातावरण में CHROME_LOG_FILE सेट कर सकते हैं ताकि क्रोम हर बार चलने वाली फ़ाइल को कंसोल गतिविधि का एक लॉग लिख सके। हर बार क्रोम शुरू होने पर लॉग ओवरराइट हो जाता है। इस तरह, यदि आपके पास एक स्वचालित सत्र है जो क्रोम चलाता है, तो आपके पास क्रोम को चालू करने के तरीके को बदलने के लिए नहीं है, और सत्र समाप्त होने के बाद लॉग होता है।

CHROME_LOG_FILE = chrome.log निर्यात करें


0

इन दिनों यह बहुत आसान है - कंसोल लॉग में प्रदर्शित किसी भी आइटम पर राइट क्लिक करें और अपने कंप्यूटर पर फ़ाइल में संपूर्ण लॉग आउटपुट को सहेजें और सहेजें के रूप में चुनें।


0

इस धागे में अन्य समाधान मेरे मैक पर काम नहीं कर रहे थे। यहाँ एक लकड़हारा है जो अजाक्स का उपयोग करके एक स्ट्रिंग प्रतिनिधित्व को लगातार बचाता है। के console.saveबजाय इसके साथ प्रयोग करेंconsole.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="";
  }
};

आपको जो कुछ भी चाहिए, उसके आधार पर, आप उस स्ट्रिंग या बस console.logइसे सहेज सकते हैं और कॉपी और पेस्ट कर सकते हैं। यदि आप इसे बचाना चाहते हैं तो यहां आपके लिए एक अजाक्स है:

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);
}

saveLog.phpएक लॉग फ़ाइल कहीं करने के लिए डेटा संलग्न करना होगा। मुझे उस हिस्से की ज़रूरत नहीं थी इसलिए मैं इसे यहाँ शामिल नहीं कर रहा हूँ। :)

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.