是否有任何快速的方法让Chrome在console.log写入中输出时间戳(像Firefox那样)。或者是prepending new Date().getTime()是唯一的选项?


当前回答

Chrome版本89.0.4389.90 (19.03.2021)

按F12。 找到并按齿轮图标。 检查显示时间戳。

其他回答

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

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

我刚找到。不需要其他肮脏的黑客破坏占位符和擦除代码中记录消息的地方。

Chrome 68+更新

“显示时间戳”设置已经移动到“DevTools设置”的Preferences窗格中,在DevTools抽屉的右上角:

试试这个:

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

输出:

附注:仅在Chrome中测试。

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

也试试这个:

this.log = console.log.bind( console, '[' + new Date().toUTCString() + ']' );

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

ES6解决方案:

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

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