Chrome中的console.log时间戳?

UpT*_*eek 206 javascript google-chrome

有没有快速的方法让Chrome在console.log写入中输出时间戳(比如Firefox).或者是预先new Date().getTime()唯一的选择?

Krz*_*lny 375

在Chrome中,有一个选项是控制台设置(开发人员工具 - >控制台 - >设置[右上角]),名为"显示时间戳",这正是我所需要的.

我刚发现它.没有其他脏的黑客需要破坏占位符并删除记录消息的代码中的位置.

  • 在Chrome 68.0.3440.106上,我必须打开开发工具(F12)>单击右上角的三点菜单>单击设置>在左侧菜单中选择首选项>在设置屏幕的控制台部分中检查显示时间戳(右上角) ) (26认同)
  • 正如@Krzysztof Wolny指出的那样,现在内置于Chrome 35 DevTools.(是的!)通过打开开发人员工具(例如F12或"Ins​​pect Element")启用,单击"gear"查看设置,然后选中"Console"部分中的"Show timestamps"复选框.![在devtools中启用时间戳设置](http://i.stack.imgur.com/bdOCZ.jpg)https://twitter.com/addyosmani#stream-item-tweet-485862365247053824 http://www.html5rocks. com/en/tutorials/developertools/chrome-35 /#timestamps-next-to-console-messages https://codereview.chromium.org/185713007 (3认同)
  • 70.0.3538.110(正式版本)(64位)这个答案曾经对我有用:即控制台“齿轮图标”;“显示时间戳记”复选标记...但现在我不**看不到Chrome 70.0.3538.110(正式版本)(64位)中的“显示时间戳记” *,所以我尝试了@tekiegirl的建议,例如:Chrome 68:即打开开发工具(F12)>单击右上角的三点菜单>单击设置>在左侧菜单中选择“首选项”>检查显示时间戳记...但是*我**不要**请参阅“首选项” *在“设置70.0.3538.110(正式版本)(64位)”的左侧菜单中 (3认同)
  • 默认情况下这应该是打开的! (3认同)
  • 谢谢@tekiegirl,同意,您的回答解决了我的问题!也就是说,Chrome 68+ 的用户必须更改 *DevTools 设置*(相对于 *quick Console settings* 的抽屉)。在 DevTools 设置中,“首选项”选项卡,“控制台”标题;您会找到“显示时间戳”复选框。 (2认同)

JSm*_*yth 79

试试这个:

console.logCopy = console.log.bind(console);

console.log = function(data)
{
    var currentDate = '[' + new Date().toUTCString() + '] ';
    this.logCopy(currentDate, data);
};
Run Code Online (Sandbox Code Playgroud)



或者,如果你想要一个时间戳:

console.logCopy = console.log.bind(console);

console.log = function(data)
{
    var timestamp = '[' + Date.now() + '] ';
    this.logCopy(timestamp, data);
};
Run Code Online (Sandbox Code Playgroud)



要登录多件事情 ,并在一个不错的方式(如对象树表示):

console.logCopy = console.log.bind(console);

console.log = function()
{
    if (arguments.length)
    {
        var timestamp = '[' + Date.now() + '] ';
        this.logCopy(timestamp, arguments);
    }
};
Run Code Online (Sandbox Code Playgroud)



使用格式字符串(JSFiddle)

console.logCopy = console.log.bind(console);

console.log = function()
{
    // Timestamp to prepend
    var timestamp = new Date().toJSON();

    if (arguments.length)
    {
        // True array copy so we can call .splice()
        var args = Array.prototype.slice.call(arguments, 0);

        // If there is a format string then... it must
        // be a string
        if (typeof arguments[0] === "string")
        {
            // Prepend timestamp to the (possibly format) string
            args[0] = "%o: " + arguments[0];

            // Insert the timestamp where it has to be
            args.splice(1, 0, timestamp);

            // Log the whole array
            this.logCopy.apply(this, args);
        }
        else
        { 
            // "Normal" log
            this.logCopy(timestamp, args);
        }
    }
};
Run Code Online (Sandbox Code Playgroud)


输出与:

样本输出

PS:仅在Chrome中测试过.

PPS:Array.prototype.slice在这里并不完美,因为它会被记录为一组对象而不是一系列对象.


Ser*_*zN1 18

您可以使用开发工具分析器.

console.time('Timer name');
//do critical time stuff
console.timeEnd('Timer name');
Run Code Online (Sandbox Code Playgroud)

"计时器名称"必须相同.您可以使用具有不同名称的多个计时器实例.


tek*_*irl 12

我最初将其添加为评论,但由于至少一个人找不到该选项(或者由于某种原因,该版本在其特定版本中不可用),因此我想添加一个屏幕截图。

在Chrome 68.0.3440.106(现在已在72.0.3626.121中检查)上,我不得不

  • 开放开发工具(F12)
  • 点击右上角的三点菜单
  • 点击设置
  • 在左侧菜单中选择偏好设置
  • 检查设置屏幕的“控制台”部分中的显示时间戳记

设置>首选项>控制台>显示时间戳


A. *_*sky 10

ES6解决方案:

const timestamp = () => `[${new Date().toUTCString()}]`
const log = (...args) => console.log(timestamp(), ...args)
Run Code Online (Sandbox Code Playgroud)

其中timestamp()返回实际格式化的时间戳并log添加时间戳并将所有自己的参数传播到console.log


And*_*iko 8

Chrome 版本 89.0.4389.90 (19.03.2021)

  1. F12

  2. 找到并按齿轮图标。

    1

  3. 检查显示时间戳

    2


Pau*_* S. 7

我转换arguments数组使用,Array.prototype.slice以便我可以concat使用另一个我要添加的数组,然后将其传递给console.log.apply(console, /*here*/);

var log = function () {
    return console.log.apply(
        console,
        ['['+new Date().toISOString().slice(11,-5)+']'].concat(
            Array.prototype.slice.call(arguments)
        )
    );
};
log(['foo']); // [18:13:17] ["foo"]
Run Code Online (Sandbox Code Playgroud)

它似乎arguments也可以Array.prototype.unshift编辑,但我不知道如果修改它是一个好主意/将有其他副作用

var log = function () {
    Array.prototype.unshift.call(
        arguments,
        '['+new Date().toISOString().slice(11,-5)+']'
    );
    return console.log.apply(console, arguments);
};
log(['foo']); // [18:13:39] ["foo"]
Run Code Online (Sandbox Code Playgroud)


KiL*_*KiL 6

+new Date并且Date.now()是获取时间戳的替代方法


Ian*_*ang 6

如果您使用的是谷歌Chrome浏览器,则可以使用chrome console api:

  • console.time:在代码中要启动计时器的位置调用它
  • console.timeEnd:调用它来停止计时器

这两个呼叫之间经过的时间显示在控制台中.

有关详细信息,请参阅文档链接:https://developers.google.com/chrome-developer-tools/docs/console


its*_*zad 6

从Chrome 68:

“显示时间戳记”已移至设置

以前在“控制台设置”中的“显示时间戳”复选框控制台设置已移至“设置”

在此处输入图片说明

  • [@tekiegirl 的回答](/sf/answers/3858732741/) 有一个屏幕截图,显示了在 DevTools 设置中在哪里可以找到复选框;此答案中的屏幕截图没有告诉我在哪里可以找到“显示时间戳”复选框。 (2认同)

小智 5

也试试这个:

this.log = console.log.bind( console, '[' + new Date().toUTCString() + ']' );
Run Code Online (Sandbox Code Playgroud)

该函数将时间戳、文件名和行号与内置的 console.log.