Javascript 是否可以将日期/时间绑定到控制台日志?

Javascript 是否可以将日期/时间绑定到控制台日志?,javascript,console.log,Javascript,Console.log,我有以下代码: var myLog = console.log.bind(console, '[DEBUG]'); 当我想将带有[DEBUG]的内容记录到控制台时,可以找到它。 现在我想在日志中添加日期/时间,我尝试了以下方法: var myLog = console.log.bind(console, '[DEBUG ' + (new Date) + ']'); 这显然不起作用,因为它总是在同一时间(调用.bind的时间)记录日志 是否有任何方法(使用.bind)在每个日志上记录当前时间,

我有以下代码:

var myLog = console.log.bind(console, '[DEBUG]');
当我想将带有
[DEBUG]
的内容记录到控制台时,可以找到它。 现在我想在日志中添加日期/时间,我尝试了以下方法:

var myLog = console.log.bind(console, '[DEBUG ' + (new Date) + ']');
这显然不起作用,因为它总是在同一时间(调用
.bind
的时间)记录日志

是否有任何方法(使用
.bind
)在每个日志上记录当前时间,而不必执行此操作:

var myLog = function(){
    var args = ['[DEBUG ' + (new Date) + ']'];
    for(var i = 0; i < arguments.length; ++i) {
        args.push(arguments[i]);
    }
    return console.log.apply(console, args);
};
var myLog=function(){
变量args=['[DEBUG'+(新日期)+']'];
对于(变量i=0;i
?

因为上面的方法显示了调用
console.log.apply
的行和调用
myLog
的行

这是因为每次调用
console.log
时,都会在
timestamp
上调用
toString
(事实上,还有所有内容)

我们覆盖默认的
toString
方法,并将其替换为时间戳(显然,您可以将输出更改为您想要的任何内容)

我选择上面的模式是因为,正如其他人所指出的(在SO chat中),您可以轻松地扩展调试对象来做其他事情

...
return {
    log: console.log.bind(console, '%s', timestamp),
    error: console.error.bind(console, '%s', timestamp),
    info: console.info.bind(console, '%s', timestamp),
    warn: console.warn.bind(console, '%s', timestamp),
    group: ...,
    groupEnd: ...,
    groupCollapsed: ... // etc
}
...

我想这就是你想要的,很简单

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

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

您可以从
Error()提取调用它的行。stack
@copy这是我已经在做的。。。但是,这不允许您在控制台中单击它来访问源文件中的行。我认为,如果您只需将带有
toString
方法的对象直接传递给函数:
console.log.bind(console,{toString:function(){…}})
,就可以简化代码。无需创建
DEBUG
或空函数。好主意!我明白了,有道理。至少在Firefox中,您可以将评估强制为字符串:。虽然Chrome也支持这一点,但它只显示
对象
。请注意,您的解决方案在Firefox中对我来说似乎不起作用,但如果您强制执行字符串求值,它会起作用:。@FelixKling。老实说,这个问题与FF并不完全相关,因为它已经包含了时间戳。但有一点担心的是,它会阻止任何东西被记录下来。有没有办法删除强制的字符串计算?只有将一件事传递到控制台日志时,才会记录。如果您传递了多个丢失的内容如果您想支持多个参数,可以在此处使用我的解决方案:
console.logCopy = console.debug.bind(console);

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