2012-05-02 81 views
9

這是一個菜鳥問題。Javascript日誌記錄

如果我想將日誌記錄添加到在瀏覽器(IE,FF等)中運行的Java腳本應用程序,該怎麼辦?據我所知,我不能保存日誌文件在客戶端主機。所以,我只有兩個選擇:在新的瀏覽器窗口中顯示我的日誌信息(如「黑鳥」)或將日誌記錄發送到服務器。

它是正確的嗎?他們通常使用什麼樣的日誌記錄?

回答

10

您不能在客戶端主機上「存儲」日誌文件。您可以打開一個窗口並將其可視化,但you(假設您正在運行Web應用程序)永遠不會看到它。

如果您絕對要求必須獲取客戶端日誌,您需要使用AJAX將它們發送回服務器。 Here's a blog post我真的很喜歡它。

+0

我認爲他絕對必須讓他們或他不會問=)它不是一個壞概念tbh和該職位的技術是完美的^^現代瀏覽器實際上允許編寫文件和ActiveX組件總是在那裏;如果客戶端接受運行它 – mschr

0

看看https://log4sure.com(披露:我創建了它) - 但它非常有用,請檢查並自行決定。它允許您記錄錯誤/事件,並且還可以讓您創建自定義日誌表。它將所有內容都存儲在自己的服務器上,因此您無需擔心。它還允許您實時監控日誌。最好的部分是免費的。

您也可以使用涼亭安裝它,使用涼亭安裝log4sure

的設置代碼真的是一件容易的事:

// setup 
 
var _logServer; 
 

 
(function() { 
 
    var ls = document.createElement('script'); 
 
    ls.type = 'text/javascript'; 
 
    ls.async = true; 
 
    ls.src = 'https://log4sure.com/ScriptsExt/log4sure.min.js'; 
 
    var s = document.getElementsByTagName('script')[0]; 
 
    s.parentNode.insertBefore(ls, s); 
 
    ls.onload = function() { 
 
    // use your token here. 
 
    _logServer = new LogServer("use-your-token-here"); 
 
    }; 
 
})(); 
 

 
// example for logging text 
 
_logServer.logText("your log message goes here.") 
 

 
//example for logging error 
 
divide = function(numerator, divisor) { 
 
    try { 
 
     if (parseFloat(value) && parseFloat(divisor)) { 
 
     throw new TypeError("Invalid input", "myfile.js", 12, { 
 
      value: value, 
 
      divisor: divisor 
 
     }); 
 
     } else { 
 
     if (divisor == 0) { 
 
      throw new RangeError("Divide by 0", "myfile.js", 15, { 
 
      value: value, 
 
      divisor: divisor 
 
      }); 
 
     } 
 
     } 
 
    } catch (e) { 
 
     _logServer.logError(e.name, e.message, e.stack); 
 

 
    } 
 
    } 
 
    // another use of logError in window.onerror 
 
    // must be careful with window.onerror as you might be overwriting some one else's window.onerror functionality 
 
    // also someone else can overwrite window.onerror. 
 
window.onerror = function(msg, url, line, column, err) { 
 
    // may want to check if url belongs to your javascript file 
 
    var data = { 
 
    url: url, 
 
    line: line, 
 
    column: column, 
 

 
    } 
 
    _logServer.logError(err.name, err.message, err.stack, data); 
 

 
}; 
 

 
// example for custom logs 
 
var foo = "some variable value"; 
 
var bar = "another variable value"; 
 
var flag = "false"; 
 
var temp = "yet another variable value"; 
 

 
_logServer.log(foo, bar, flag, temp);