Javascript Logging

Javascript Logging

本文关键字:Logging Javascript      更新时间:2023-09-26

这是一个菜鸟问题。

如果我想将日志记录添加到在浏览器(IE,FF等)中运行的java脚本应用程序怎么办?据我了解,我无法将日志文件保存在客户端主机中。因此,我只有两个选择:在新的浏览器窗口中显示我的日志记录信息(如"黑鸟")或将日志记录发送到服务器。

正确吗?他们通常使用哪种日志记录?

不能在客户端主机上"存储"日志文件。您可以打开一个窗口并对其进行可视化,但(假设您正在运行 Web 应用程序)将永远不会看到它。

如果绝对必须获取客户端日志,则需要使用 AJAX 将它们发送回服务器。这是我非常喜欢它的一篇博客文章。

另一种可能性是 jsnlog 库 http://js.jsnlog.com/它将允许您将客户端日志发送到服务器。

看看 https://log4sure.com(披露:我创建了它) - 但它真的很有用,检查一下并自己决定。它允许您记录错误/事件,还允许您创建自定义日志表。它将所有内容存储在自己的服务器上,因此您不必这样做。它还允许您实时监控日志。最好的部分是,它是免费的。

你也可以用bower来安装它,用bower安装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);