node-webkit相当新,所以我还在弄清楚一切是如何运作的......
我的应用程序中有一些日志记录:
console.log("Name: %s", this.name);
按预期输出到浏览器控制台:
Name: Foo
但是在调用终端中,我得到了一些相当丑陋的输出:
[7781:1115/085317:INFO:CONSOLE(43)] ""Name: %s" "Foo"", source: /file/path/to/test.js (43)
括号内的数字输出可能有用,但我不知道如何解释它。源信息很好。但我真的希望打印的字符串是printf样式的格式,而不是显示为单独的参数。
那么,有没有办法让stdout以不同的方式格式化,或者调用某种自定义输出函数以便输出我想要的信息?
答案 0 :(得分:0)
我最终放弃了,并用:
包装了console.log()log = function() {
console.log(util.format.apply(this, arguments));
}
实际的终端控制台输出是通过铬中的RenderFrameHostImpl::OnAddMessageToConsole
完成的,前缀信息通过LogMessage::Init()
生成,格式为:
[pid:MMDD/HHMMSS:severity:filename(line)]
javascript console.log通过Log()函数在console.cc中实现。 printf样式格式化正在更高级别完成,因此在调用Log()函数(或类似函数)时,它们只传递一个字符串。
这不是一个令人满意的答案,而是一种可以容忍的解决方法。
答案 1 :(得分:0)
我一直在寻找创建一个命令行界面来跟我的UI一起出现类似的问题。除了没有记录我想要的值,我还想摆脱[pid:MMDD / HHMMSS:severity:filename(line)]输出前缀,所以我添加了以下内容:
console.log = function (d) {
process.stdout.write(d + '\n');
};
以便将控制台日志记录设置回stdout而无需额外的详细信息。不幸的是还有一个工作。