交叉 JavaScript console.log() 调用并将数据发送到我自己的记录器函数

2023-12-02

如何劫持对浏览器的调用console.log并将它们发送到我自己的日志函数,同时仍然让它们正常console.log entry.

JSBin 和 CodePen 等站点允许您在页面 DOM 中查看控制台日志的版本,同时仍然创建 console.log 条目。

所以每次我打电话console.log('my log msg');它应该表现得像正常的,但也将控制台日志数据通过管道/发送到我自己的 JavaScriptlogger.log('log entry')功能。

如何才能做到这一点?


UPDATE

对象所需的自定义记录器输出:

记录该对象:

var data = {
  date: new Date(),
  prop2: 'sfgsdgsd',
  arrayProp: ['key1', 'key2', 'key3'],
  arrayOfObjectsProp: [
  {
      date: new Date(),
      date2: new Date()
  },{
      date: new Date(),
      date2: new Date()
  },{
      date: new Date(),
      date2: new Date()
  }]      
};
setInterval(function() {
  console.log(data);
}, 10000);

在记录器中将显示为:

{
  "date": "2017-01-01T03:19:46.944Z",
  "prop2": "sfgsdgsd",
  "arrayProp": [
    "key1",
    "key2",
    "key3"
  ],
  "arrayOfObjectsProp": [
    {
      "date": "2017-01-01T03:19:46.944Z",
      "date2": "2017-01-01T03:19:46.944Z"
    },
    {
      "date": "2017-01-01T03:19:46.944Z",
      "date2": "2017-01-01T03:19:46.944Z"
    },
    {
      "date": "2017-01-01T03:19:46.944Z",
      "date2": "2017-01-01T03:19:46.944Z"
    }
  ]
}

你可以分配旧的console.log一个变量,例如,oldlog,然后分配给console.log您自己的函数,它将执行所有必要的操作,然后调用oldlog最后,传递给定的文本作为参数

var oldlog = console.log
console.log = function(...args) {
  // do something fancy with text passed
  oldlog(...args);
}

EDIT正如 KevBot 提到的,console.log可以接受无限数量的参数,因此,为了涵盖所有情况,您的函数应该允许这种行为。这可以使用 ES6 功能来完成,称为其余参数或者,不依赖 ES6,使用arguments类似数组的对象,如 num8er 的答案中所述

另外,正如 Oriol 提到的,某些浏览器不允许oldlog不被叫到console。这可以通过更改线路来解决

oldlog(...args)

按照您的习惯console.log to

oldlog.call(console, ...args)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

交叉 JavaScript console.log() 调用并将数据发送到我自己的记录器函数 的相关文章

  • 使用 Javascript/Web Audio API 访问/处理系统音频

    是否可以使用 Web Audio API 访问系统音频 以便对其进行可视化或应用均衡器 看起来可以将系统音频连接到 Web Audio API 可以访问的输入设备 即Web Audio API 获取声卡的输出 https stackover
  • 如何将函数处理程序从控制器传递到 AngularJs 中的指令隔离范围?

    我在控制器中有以下功能 angular module app controller BodyController function this click function message alert message 我想将此函数传递到指令的
  • Web Worker 中的 RequireJS

    我正在尝试在网络工作者中使用 RequireJS 问题是我在使用它时不断收到以下错误 Uncaught Error importScripts failed for underscore at lib underscore js 我已经测试
  • Mat select - 获取selectionChange的旧值

    我有一个项目 其中有一个包含以下内容的表单mat select选择器 每当用户更改输入时 我都会向用户显示一个对话框来确认此操作 现在 The selectionChange 通知值何时更改并将新值传递为 event 当用户取消对话框时 有
  • 使用 ng-if 内容短暂呈现然后消失

    我的页面上有一些内容包含在 ng if 中 如下所示 div class text danger p strong Message displayed to User strong p div 然后在我的 Angular js 控制器中我有
  • 考虑使用“jsdom”测试环境

    我有这个简单的测试 import React from react import render from testing library react import Button from describe Button gt it rend
  • 是否有正确的方法将自定义 Javascript 添加到 ASP.NET MVC 5 页面?

    目前 我已将 jQuery 源文件添加到 ASP NET 项目的 Scripts 文件夹中 在 Layout cshtml 页面中 我包含了 Scripts jquery 2 1 1 min js 现在 我可以在我制作的每个页面上包含 jQ
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • JavaScript 语法是什么:{Ci, CC}? [复制]

    这个问题在这里已经有答案了 我正在做一些 FF 附加开发 我看到这样的语法 var Cc Ci require chrome 只是好奇这个语法是什么 以及它是否对 FF 开发或其他东西有特殊意义 这称为解构赋值 它的一个特点是JavaScr
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • 从 mvc web api httpresponse 生成 csv 并通过 angularjs 接收以供下载

    我正在尝试从我的 Web api 生成一个 CSV 文件并通过 angularjs 接收该文件 我有一个如下所示的 API 控制器 HttpPost public HttpResponseMessage GenerateCSV FieldP
  • Safari 和 Edge 中的 audioContext.copyToChannel() 替代方案

    Safari 和 Edge 都不支持audioContext copyToChannel 函数用自定义内容填充audioBuffer 还有其他方法吗 就我而言 我想创建一个脉冲响应 用该响应填充缓冲区 并将一些声音与该缓冲区进行卷积 对于
  • 以编程方式将子节点添加到 jstree

    我正在尝试编写一些动态添加节点到 jstree 的代码 我已经关注了医生http www jstree com documentation crrm http www jstree com documentation crrm但无法获得一个
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 如何在不接受焦点的元素上捕获键盘事件?

    我知道要处理输入字段中的键盘事件 您可以使用 input keyup function e var code e keyCode and 13 is the keyCode for Enter 但是 现在 我有一些div and li元素
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use

随机推荐

  • Apache HTTP 服务器上的 SSL [关闭]

    Closed 这个问题是与编程或软件开发无关 目前不接受答案 我有 2 个用于 Apache 服务器的 crt 文件 1 root bundle crt 2 我的域名 com crt 和其他捆绑包 1 中级 crt 2 我的域名 com c
  • 尝试在 symfony 4 中安装 sonata admin 时出错

    我尝试在 symfony 4 项目中安装 sonata admin 用户包 composer create project symfony website skeleton my project composer require sonat
  • CloudBlob.OpenRead() 未读取所有数据

    使用 Windows Azure 存储客户端库 CloudBlob OpenRead 方法仅读取 4 mb 的数据 如何使用 OpenRead 方法读取完整流 CloudBlob blob container GetBlobReferenc
  • SetTimeOut 计时器内的 JQuery GetJSON

    任何人都可以发布示例代码 其中有一个正在运行的计时器 javascript settimeout 并进行数据检索 基本上我这个计时器的作用是显示新消息 myFunction param data retrieval operation us
  • 自动滚动到底部

    我正在开发带有聊天屏幕的应用程序 但与普通屏幕一样 它开始从上到下滚动 但应该是从下到上 该应用程序位于 Telerik Nativescript 平台中 View xml
  • 如何为 Autodesk Forge App 指定多个回调 URL?

    您可以注册多个回调 URL 回调 URL 工具提示中有说明 但没有关于如何输入多个 URL 的示例 正确的分隔符是什么 我试过 n 这是工具提示上的拼写错误 我们将修复它 今天您可以使用 2022 年 9 月更新 此功能现已推出
  • x86 中如何使用进位和溢出标志来计算乘法

    当两个数字相乘溢出寄存器时 如何使用两个标志来正确计算答案 E g if al holds 0xff并乘以0x2 导致溢出到ax 这些标志对此有何帮助 Multiplication on x86 x64 never overflows wh
  • C# 控制台应用程序 - 如何使用 GDI+ 在 BMP/JPG 文件中绘图?

    我想使用 C 控制台应用程序和 GDI 在 BMP 或 JPG 文件中绘制矩形 箭头 文本 线条等形状 这是我在网上找到的 c 将 System Drawing Graphics 保存到文件c 将 System Drawing Graphi
  • 值文件上传 - 适用于 Chrome,但不适用于 IE,Image img = Image.FromStream(Request.InputStream)

    我正在使用 Valum 上传的稍微修改的版本 github链接 我已将其修改为上传到数据库 但未修改它用于将文件作为输入流放入请求中的 javascript 以下代码行在 IE 8 中失败 但已确认在 Chrome 中可以工作 using
  • Kotlin Multiplatform Mobile 找不到 klib 包

    我读过这些帖子1 2 3面临类似的问题 我正在尝试使用 klib在我的 KMM Android 项目中 Klib 是由library hC 标头 这就是我所做的 我构建了 Kotlin 库 在 KMM 中使用以下 Gradle 块share
  • 仅当存在另一个字段时才进行 yii 验证

    我的表单中有两个名为start date and end date 我想验证end date除非start date存在 在 Rails 中 我们有 if 我们有类似的东西吗yii 定义您的自定义验证函数 定义规则 array end da
  • SQL唯一记录不是列?

    有没有办法插入到 SQL 数据库中 整个记录是唯一的 我知道您可以创建主键和唯一列 但这不是我想要的 在不使数据库过载的情况下执行此操作的最佳方法是什么 我见过一种使用 WHERE NOT EXISTS 的子查询 我只想知道插入记录的最有效
  • 为什么使用解引用运算符来声明指针?

    为什么是 用于声明指针 它删除了间接寻址 但当您声明像这样的指针时不会删除任何间接寻址int a b 不应该删除间接 b C 和 C 中的许多符号都是重载的 也就是说 它们的含义取决于使用它们的上下文 例如 符号 可以表示取址运算符和二进制
  • 如何从给定的出现中删除匹配模式

    我正在尝试删除匹配的模式 从第二次出现开始 使用sed or awk 输入文件包含以下信息 abc def abc ghi jkl abc xyz abc 我想删除图案abc从第二个例子来看 输出应如下所示 abc def ghi jkl
  • 在ggplot/facet_wrap()中,如何标记Y轴具有不同的格式

    在ggplot facet wrap 中 如何标记Y轴具有不同的格式 谢谢 library tidyverse test data lt diamonds plot data lt test data gt mutate x to pric
  • 自定义 google plus url 默认评论

    使用google plus分享链接时是否可以默认添加评论 网址如下 https plusone google com 1 confirm hl en url URL TO SHARE 我已经尝试添加 message MESSAGE 但这没有
  • 如何在数组中存储目录列表?

    为什么这没有列出任何内容 谢谢 FOLDER ls tmp backup while read DIR do FOLDER DIR done echo FOLDER 1 Analysis 你的例子注定会失败 例如 不解析输出ls 不要假设目
  • pyparsing,每个,结果名称

    我正在尝试使用 pyparsing 构建一个不完全是 sql 解析器 我没有 from 子句 没有任何联接等 我今天的工作基于 pyparsing 中包含的 simpleSQL py 示例脚本 我试图将 GROUP BY 和 ORDER B
  • 对 TFS 上的签入策略强制执行自定义 stylecop 规则

    我已经安装了 StyleCop CheckIn 策略 来自here 而且效果很好 不过 我编写了一些自定义规则 希望将其作为签入策略的一部分强制执行 Visual Studio 2008 Team Explorer 2008 TFS 200
  • 交叉 JavaScript console.log() 调用并将数据发送到我自己的记录器函数

    如何劫持对浏览器的调用console log并将它们发送到我自己的日志函数 同时仍然让它们正常console log entry JSBin 和 CodePen 等站点允许您在页面 DOM 中查看控制台日志的版本 同时仍然创建 consol