控制台.log Chrome 中的时间戳?

2022-08-29 23:48:33

有没有快速的方法让Chrome在写入中输出时间戳(就像Firefox一样)。还是预置是唯一的选择?console.lognew Date().getTime()


答案 1

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

我刚刚找到了它。不需要其他肮脏的黑客来破坏占位符并擦除代码中记录消息的位置。

Chrome 68+ 更新

“显示时间戳”设置已移至“DevTools 设置”的“首选项”面板,位于 DevTools 抽屉的右上角:

Show timestamps how-to picture


答案 2

试试这个:

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

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



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

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

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



以一种很好的方式记录多个事物(如对象树表示):

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

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



使用格式字符串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);
        }
    }
};


输出:

Sample output

附言:仅在Chrome中进行了测试。

P.P.S.:在这里并不完美,因为它将被记录为一个对象数组,而不是一系列的对象。Array.prototype.slice