2017-07-16 70 views
0

我在javascript/php上有一個web應用程序,我正在製作一個bug查找程序功能,前端的一個用戶可以通知bug的按鈕。 目前的功能:將console.log的瀏覽器導入數據

function bug_finder(){ 

    var txt = document.getElementById('bug_txt').value; 

    if(txt==''){ 
     alert_fail('Um campo ficou vazio!'); 
     return; 
    } 

    var DATA = { acao:'bug_finder', txt:txt, log:console.log }; 

    console.log(JSON.stringify(DATA)); 

    $.ajax({ 
     type: "POST", 
     url: 'dash_acao.php', 
     timeout:2000, 
     data: DATA, 
     success: function(response){ 

      console.log(response); 
      alert_sucesso(''); 

     }, 
     error: function(response){ 
      alert_fail(''); 
     } 
    }); 

} 

阿賈克斯將瀏覽器的PHP文件,我做數據庫更新,並在服務器中創建日誌文件,所以我可以看看它的內容的console.log。

直到現在我還沒有找到一種方法來從瀏覽器中獲取console.log數據,所以我可以操縱。

+0

*「...所以我可以操縱」*。你不能操縱什麼? –

+0

可能的重複https://stackoverflow.com/questions/19846078/how-to-read-from-chromes-console-in-javascript – Kdawg

回答

0

您可以用自定義函數覆蓋console.log。請參閱下面的代碼片段。請注意,關於console.log的參數計數沒有限制,所以您最終將擁有陣列數組。

// remember original console.log 
 
const origLog = console.log; 
 
// here, the contents of console.log will be stored 
 
let consoleBuffer = []; 
 

 
// replace console.log with own function 
 
console.log = function (...args) { 
 
    // I would not store an infinite amount of entries, 
 
    // so remove oldest one if 10 stored 
 
    if (consoleBuffer.length === 10) consoleBuffer.pop(); 
 
    
 
    // remember 
 
    consoleBuffer.push(args); 
 
    
 
    // call original function 
 
    origLog.apply(console, args); 
 
}; 
 

 
console.log('foo'); 
 
let err = 'unknown error'; 
 
console.log('An error occured: ', err); 
 
// use warn since this was not replaced 
 
console.warn(consoleBuffer);

EDIT(ES5代碼)

'use strict'; 
 

 
// remember original console.log 
 
var origLog = console.log; 
 
// here, the contents of console.log will be stored 
 
var consoleBuffer = []; 
 

 
// replace console.log with own function 
 
console.log = function() { 
 
    var args = Array.prototype.slice.call(arguments); 
 
    
 
    // I would not store an infinite amount of entries, 
 
    // so remove oldest one if 10 stored 
 
    if (consoleBuffer.length === 10) consoleBuffer.pop(); 
 

 
    // remember 
 
    consoleBuffer.push(args); 
 

 
    // call original function 
 
    origLog.apply(console, args); 
 
}; 
 

 
console.log('foo'); 
 
var err = 'unknown error'; 
 
console.log('An error occured: ', err); 
 
// use warn since this was not replaced 
 
console.warn(consoleBuffer);

+0

男人哦,我認爲就是這樣。我現在要測試它,但我認爲它會工作。謝謝。 –

+0

這誤差修改顯示 '遺漏的類型錯誤:CreateListFromArrayLike在Object.console.log((指數):3532)呼籲非對象 在(指數):3535' –

+0

@LucasMartins請問ES5代碼(請參閱編輯)爲你工作? – SVSchmidt

0

你不能讓你在執行console.log打印的數據()。 我不明白你爲什麼需要它。而不是打印它使用console.log()你可以「操縱」的迴應? 或者如果你想要它到另一個PHP/HTML文件,只需發送它。

+0

該函數是一個bug_finder,我需要從瀏覽器中獲取信息以知道孔系統上發生了什麼。這是一個在兩個不同城市使用的大系統。有時會出現錯誤,我需要一個報告工具,以便用戶可以描述發生的情況,因此在閱讀我想要發送的瀏覽器日誌時,它給了我一個小小的指導。 –

相關問題