2013-08-19 93 views
2

我想將console.log()函數的輸出保存爲對象或變量。 我主要感興趣的是接收對象結果以及行號。如何將console.log()結果存儲爲對象/變量?

以下是隻是爲了演示,我正在尋找:提前任何幫助

var myobj = {"key":"value"}; // (<< in 'myjs.js, line 123) 
var mylog = console.log(myobj); 

// output mylog: {"key":"value"}, myjs.js:123 

謝謝!

+0

'的console.log()'不會返回任何值...所以這是不可能與console.log –

+0

事實上'myObj'是'myLog',只需指定它 –

+0

從技術上講,你可以覆蓋控制檯的原型函數,但這似乎是一個可怕的想法。 – Fenixp

回答

0

嘗試保存myObj對象。這就是記錄器將記錄的內容。

+0

我也想收到行號。 – Elvis

0

可以從鏈接試試這個Read the output of console.log

function myFunctionThatMightHaveAnError(){ 
    // instead of just failing silently, actually throw an error 
    $.error("My special error"); 
} 
// Then use a try/catch block to handle it 
try { 
    myFunctionThatMightHaveAnError(); 
    alert("No error!"); // this line would only run if no error were thrown 
} catch (e) { 
    if(e == "My special error") { 
     // Handle error 
    } 
} 
+0

謝謝!我自己做了一個類似的解決方法,但我錯過了如何捕捉行號。 – Elvis

+0

這段代碼實際上是從函數捕獲錯誤輸出,所以在技術上你不讀控制檯,因爲你不能讀控制檯....至今我的知識, 因此你不能捕獲這條線使用此代碼的號碼...或任何 – MaveRick

2

可以使用new Error().lineNumber獲得行號 如何確定行號的詳細信息 - determining line number

+0

這是一個非常有趣的提示,謝謝! 不幸的是,Error()似乎並不像跨瀏覽器兼容,因爲console()。 如果應該有方法來捕捉控制檯輸出,我更喜歡這個。 到目前爲止,這一個非常接近! – Elvis

1

您可以覆蓋的console.log和調用錯誤()。在谷歌Chrome瀏覽器顯示行號。

谷歌瀏覽器堆棧是這樣的:

Error 
    at Error (<anonymous>) 
    at Console.console.log (http://localhost/test.js:6:27) 
    at foo (http://localhost/test.js:13:13) 
    at http://localhost/test.js:16:1 

因此,代碼需要獲取3行,然後刪除"at http://localhost"和字符數

(function(log) { 
    console.log = function(o) { 
     var stack = Error().stack.split('\n'); 
     log.call(console, JSON.stringify(o) + ', ' + stack[3]. 
      replace(/.*http:\/\/[^\/]*|:[0-9]+\)$/g, '')); 
    }; 
})(console.log); 


function foo() { 
    console.log({foo: 'bar'}); 
} 

foo(); 
相關問題