这是一个初学者的问题。
如果我想要为在浏览器(IE,FF等)中运行的JavaScript应用程序添加日志记录,该怎么办?据我所知,无法在客户端主机上保存日志文件。因此,我只有两个选择:在新的浏览器窗口(如"blackbird")中显示我的日志信息,或将日志发送到服务器。
是这样吗?通常使用什么类型的日志记录?
这是一个初学者的问题。
如果我想要为在浏览器(IE,FF等)中运行的JavaScript应用程序添加日志记录,该怎么办?据我所知,无法在客户端主机上保存日志文件。因此,我只有两个选择:在新的浏览器窗口(如"blackbird")中显示我的日志信息,或将日志发送到服务器。
是这样吗?通常使用什么类型的日志记录?
你不能将日志文件“存储”在客户端主机上。你可以打开一个窗口并可视化它,但是(假设你正在运行Web应用程序)你永远不会看到它。
如果你一定要获取客户端日志,你需要使用AJAX将其发送回服务器。这篇博客文章我非常喜欢它。
看一下https://log4sure.com(声明:我创建了它)- 但它真的很有用,去看看并自行决定。它允许您记录错误/事件,并允许您创建自定义日志表。它将所有内容存储在自己的服务器上,因此您不必担心。它还允许您实时监视日志。最好的部分是,它是免费的。
您也可以使用Bower安装它,使用bower install 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);