ไม่มีใครรู้วิธีบันทึก console.log เอาต์พุตใน Chrome เป็นไฟล์หรือไม่ หรือวิธีการคัดลอกข้อความออกจากคอนโซล?
สมมติว่าคุณใช้การทดสอบการทำงานสองสามชั่วโมงและคุณมีคอนโซลหลายพันบรรทัดเอาต์พุตของบล็อกใน Chrome คุณจะบันทึกหรือส่งออกได้อย่างไร
ไม่มีใครรู้วิธีบันทึก console.log เอาต์พุตใน Chrome เป็นไฟล์หรือไม่ หรือวิธีการคัดลอกข้อความออกจากคอนโซล?
สมมติว่าคุณใช้การทดสอบการทำงานสองสามชั่วโมงและคุณมีคอนโซลหลายพันบรรทัดเอาต์พุตของบล็อกใน Chrome คุณจะบันทึกหรือส่งออกได้อย่างไร
คำตอบ:
ฉันต้องการทำสิ่งเดียวกันและนี่เป็นวิธีแก้ปัญหาที่ฉันพบ:
เปิดใช้งานการบันทึกจากบรรทัดคำสั่งโดยใช้แฟล็ก:
--enable-logging --v=1
สิ่งนี้จะบันทึกทุกอย่างที่ Chrome ทำภายใน แต่จะบันทึกconsole.log()
ข้อความทั้งหมดด้วย แฟ้มบันทึกที่เรียกว่าและตั้งอยู่ในchrome_debug.log
User Data Directory
CONSOLE(\d+)
กรองล็อกไฟล์ที่คุณได้รับสายด้วย
--incognito
โปรดทราบว่าคอนโซลบันทึกไม่ปรากฏขึ้นพร้อมกับ
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1
ด้วยบันทึกที่บันทึกไว้ใน~/Library/Application Support/Google/Chrome/chrome_debug.log
console.log()
บรรทัดของฉันไม่มีที่ใดในไฟล์นั้น ใครมีการแก้ไขสำหรับเรื่องนี้?
เครื่องมือ Chrome dev ช่วยให้คุณสามารถบันทึกเอาต์พุตคอนโซลเป็นไฟล์ได้
{a: 1, b: 2, c: 3, ...}
มันจะยังคงพิมพ์วัตถุขนาดใหญ่ในรูปแบบที่ถูกตัดทอนของพวกเขาเช่น
มีปลั๊กอินจาวาสคริปต์แบบโอเพ่นซอร์สที่ทำเช่นนั้น แต่สำหรับเบราว์เซอร์ใด ๆ - debugout.js
Debugout.js บันทึกและบันทึก console.logs เพื่อให้แอปพลิเคชันของคุณสามารถเข้าถึงได้ การเปิดเผยแบบเต็มฉันเขียนไว้ มันจัดรูปแบบประเภทที่แตกต่างกันอย่างเหมาะสมสามารถจัดการวัตถุและอาร์เรย์ที่ซ้อนกันและสามารถเลือกที่จะบันทึกเวลาถัดจากแต่ละบันทึก นอกจากนี้คุณยังสามารถสลับการบันทึกสดได้ในที่เดียวและไม่ต้องลบข้อความการบันทึกทั้งหมดของคุณ
ฉันพบวิธีที่ดีและง่ายสำหรับสิ่งนี้
ในคอนโซล - คลิกขวาบนวัตถุที่ล็อกคอนโซล
คลิกที่ 'จัดเก็บเป็นตัวแปรทั่วโลก'
ดูชื่อของตัวแปรใหม่ - เช่นตัวแปร name1
พิมพ์ในคอนโซล: JSON.stringify (variableName1)
คัดลอกเนื้อหาสตริงตัวแปร: เช่น {"a": 1, "b": 2, "c": 3}
เพื่อการใช้งานไฟล์บันทึกที่ดีขึ้น (โดยไม่ต้องใช้ Chrome-debug)
--enable-logging --log-level=0
แทนที่จะ
--v=1
เป็นข้อมูลที่มากเกินไป
มันจะยังคงให้ข้อผิดพลาดและคำเตือนเหมือนที่คุณมักจะเห็นในคอนโซล Chrome
อัปเดต 18 พฤษภาคม 2020: อันที่จริงฉันคิดว่านี่ไม่เป็นความจริงอีกต่อไป ฉันไม่พบข้อความคอนโซลภายในระดับการบันทึกนี้
สิ่งนี้อาจเป็นประโยชน์หรือไม่ก็ได้ แต่ใน Windows คุณสามารถอ่านบันทึกของคอนโซลโดยใช้การติดตามเหตุการณ์สำหรับ Windows
http://msdn.microsoft.com/en-us/library/ms751538.aspx
การทดสอบการรวมระบบของเราทำงานใน. NET ดังนั้นฉันจึงใช้วิธีนี้เพื่อเพิ่มบันทึกการทำงานคอนโซลให้กับผลการทดสอบของเรา ฉันได้ทำโครงการคอนโซลตัวอย่างเพื่อสาธิตที่นี่: https://github.com/jkells/chrome-trace
--enable-logging --v = 1 ดูเหมือนจะไม่ทำงานกับ Chrome เวอร์ชันล่าสุด
มีคำตอบที่ดีมากมาย แต่ทำไมไม่ใช้ JSON.stringify (your_variable)? จากนั้นนำเนื้อหาผ่านการคัดลอกและวาง (ลบเครื่องหมายคำพูดภายนอก) ฉันโพสต์คำตอบเดียวกันนี้ได้ที่: วิธีบันทึกผลลัพธ์ของ console.log (วัตถุ) ไปยังไฟล์ได้อย่างไร
มีเครื่องมือโอเพนซอร์สอีกตัวที่ช่วยให้คุณสามารถบันทึกconsole.log
ผลลัพธ์ทั้งหมดในไฟล์บนเซิร์ฟเวอร์ของคุณ - JS LogFlush (plug!)
JS LogFlushเป็นโซลูชั่นการบันทึก JavaScript แบบบูรณาการซึ่งรวมถึง:
- ข้ามเบราว์เซอร์ UI- น้อยแทน console.log - บนฝั่งไคลเอ็นต์
- ระบบจัดเก็บข้อมูลบันทึก - บนฝั่งเซิร์ฟเวอร์
หากคุณใช้เซิร์ฟเวอร์ Apache บนโลคัลโฮสต์ของคุณ (อย่าทำสิ่งนี้บนเซิร์ฟเวอร์ที่ใช้งานจริง) คุณสามารถโพสต์ผลลัพธ์ลงในสคริปต์แทนที่จะเขียนลงในคอนโซล
ดังนั้นแทนที่จะเป็น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);
บน Linux (อย่างน้อย) คุณสามารถตั้งค่า CHROME_LOG_FILE ในสภาพแวดล้อมเพื่อให้ chrome เขียนบันทึกของกิจกรรม Console เป็นไฟล์ที่กำหนดชื่อในแต่ละครั้งที่เรียกใช้ บันทึกถูกเขียนทับทุกครั้งที่เริ่มการทำงานของ Chrome ด้วยวิธีนี้หากคุณมีเซสชันอัตโนมัติที่ใช้งาน Chrome คุณไม่จำเป็นต้องเปลี่ยนวิธีเริ่มการทำงานของ Chrome และบันทึกจะอยู่ที่นั่นหลังจากเซสชันสิ้นสุดลง
ส่งออก CHROME_LOG_FILE = chrome.log
ทุกวันนี้มันง่ายมาก - คลิกขวาที่รายการใด ๆ ที่แสดงในบันทึกของคอนโซลแล้วเลือกบันทึกเป็นและบันทึกผลลัพธ์ของบันทึกทั้งหมดลงในไฟล์บนคอมพิวเตอร์ของคุณ
โซลูชันอื่น ๆ ในชุดข้อความนี้ไม่ได้ทำงานกับ mac ของฉัน นี่คือตัวบันทึกที่บันทึกการแทนสตริงเป็นระยะโดยใช้ ajax ใช้มันด้วย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
มันและคัดลอกและวาง นี่คือ ajax สำหรับคุณในกรณีที่คุณต้องการบันทึก:
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
ควรผนวกข้อมูลไปยังที่ใดที่หนึ่งล็อกไฟล์ ฉันไม่ต้องการส่วนนั้นดังนั้นฉันจึงไม่รวมที่นี่ :)