有没有什么快速的方法可以让 Chrome 在 console.log
写入时输出时间戳(就像 Firefox 那样)。还是在前面加上 new Date().getTime()
是唯一的选择?
原文由 UpTheCreek 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有什么快速的方法可以让 Chrome 在 console.log
写入时输出时间戳(就像 Firefox 那样)。还是在前面加上 new Date().getTime()
是唯一的选择?
原文由 UpTheCreek 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试这个:
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);
}
}
};
输出结果:
PS:仅在 Chrome 中测试。
PPS: Array.prototype.slice
在这里并不完美,因为它会被记录为对象数组而不是一系列对象。
原文由 JSmyth 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答5.9k 阅读✓ 已解决
9 回答9.3k 阅读
6 回答4.9k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10k 阅读
5 回答7.2k 阅读✓ 已解决
在 Chrome 中,控制台设置中有一个名为“显示时间戳”的选项(按 F1 或选择开发人员工具 -> 控制台 -> 设置 [右上角]),这正是我所需要的。
我刚找到它。不需要其他肮脏的黑客来破坏占位符并擦除代码中记录消息的位置。
适用于 Chrome 68+ 的更新
“显示时间戳”设置已移至“DevTools 设置”的“首选项”窗格,位于 DevTools 抽屉的右上角: