【问题标题】:Javascript LoggingJavascript 日志记录
【发布时间】:2012-05-12 06:23:42
【问题描述】:

这是一个菜鸟问题。

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

正确吗?他们通常使用什么样的日志记录?

【问题讨论】:

    标签: javascript logging client-side


    【解决方案1】:

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

    如果您绝对必须获取客户端日志,则需要使用 AJAX 将它们发送回服务器。 Here's a blog post我真的很喜欢它。

    【讨论】:

    • 我认为他绝对必须得到它们,否则他不会问 =) 这不是一个坏概念,而且那篇文章中的技术是完美无缺的 ^^ 现代浏览器实际上确实允许写入文件,ActiveX 组件一直都是那里;如果客户端接受运行它
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      看看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);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        相关资源
        最近更新 更多