2012-05-02 82 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);