当前位置: 首页 > 面试题库 >

捕获javascript console.log?

郑胡媚
2023-03-14
问题内容

当我的JS应用程序写入console.log时,我想捕获该日志消息,以便可以AJAX将日志输出到服务器。我怎么做?

写入日志的代码来自外部服务,这就是为什么我不能直接将其ajax的原因。


问题答案:

您可以通过以下方式劫持JavaScript函数:

(function(){
    var oldLog = console.log;
    console.log = function (message) {
        // DO MESSAGE HERE.
        oldLog.apply(console, arguments);
    };
})();
  1. 第1 行将您的函数包装在一个闭包中,因此没有其他函数可以直接访问oldLog(出于可维护性的原因)。
  2. 第2行 记录了原始方法。
  3. 第3行 创建了一个新功能。
  4. 第4行 是您发送message到服务器的位置。
  5. 第5 行将调用原始方法,因为它最初会被处理。

apply使用这样我们就可以调用它
console使用原来的参数。简单调用oldLog(message)会失败,因为log取决于它与的关联console



 类似资料:
  • 我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。

  • 问题内容: Java新手问题: 我需要捕获由第三方组件写入printStream的文本。 PrintStream默认为System.err,但可以更改为另一个PrintStream。 查看文档,我找不到将PrintStream的内容定向到字符串编写器/缓冲区的简单方法。 有人可以帮忙吗? 问题答案:

  • export class SearchService { ... .map((response) => response.json()) .catch((e) => { if (e.status >== 500) { return cachedVersion(); new Error(`${ e.status

  • 问题内容: 错误是Throwable的子类,它指示严重的问题,即合理的应用程序不应尝试捕获 但作为的子类,我可以捕获这种类型。 我了解为什么捕获这种异常不是一个好主意。据我了解,如果我们决定捕获它,捕获处理程序不应自行分配任何内存。否则会再次抛出。 所以,我的问题是: 捕捞可能是个好主意吗? 如果我们决定进行,如何确保处理程序本身不会分配任何内存(任何工具或最佳实践)? 问题答案: 我同意和不同意

  • 主要内容:jQuery DOM 操作,获得内容 - text()、html() 以及 val(),实例,实例,获取属性 - attr(),实例jQuery 拥有可操作 HTML 元素和属性的强大方法。 jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力。 jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。 DOM = Document Object Model(文档对象模型) DOM 定义访问 HTML 和 XML 文档的标准:

  • 捕获SIGKILL SIGKILL是常见的Linux信号,我们使用kill命令杀掉进程也就是像进程发送SIGKILL信号。 和其他信号不同,SIGKILL和SIGSTOP是不可被Catch的,因此下面的代码是能编译通过但也是无效的,更多细节可以参考golang/go#9463. c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGKIL