Node-RED 使用一个记录器,将其输出写入控制台。它还支持使用自定义记录器模块,以将输出发送到其他地方。
node-red-log
命令查看服务日志。
控制台记录器可以在您的
设置文件中的 logging
属性下进行配置。
// 配置日志输出
logging: {
// 控制台日志记录
console: {
level: "info",
metrics: false,
audit: false
}
}
有三个属性用于配置记录器的行为:
level
要记录的日志级别。选项包括:
fatal
- 仅记录使应用程序无法使用的错误error
- 记录对特定请求被认为是致命的错误warn
- 记录非致命问题info
- 记录有关应用程序的一般运行的信息debug
- 记录比信息级别更详细的信息trace
- 记录非常详细的日志off
- 完全不记录日志消息除 off
外,每个级别包括更高级别的消息 — 例如,warn
级别将包括 error
和 fatal
级别的消息。
您可以在编写函数部分找到如何记录这些不同日志级别的 API 参考。
metrics
当设置为 true
时,Node-RED 运行时将输出流执行和
内存使用信息。
每个节点中接收和发送的事件将输出到日志中。 例如,以下日志是来自具有注入和调试节点的流的输出。
9 Mar 13:57:53 - [metric] {"level":99,"nodeid":"8bd04b10.813f58","event":"node.inject.receive","msgid":"86c8212c.4ef45","timestamp":1489067873391}
9 Mar 13:57:53 - [metric] {"level":99,"nodeid":"8bd04b10.813f58","event":"node.inject.send","msgid":"86c8212c.4ef45","timestamp":1489067873392}
9 Mar 13:57:53 - [metric] {"level":99,"nodeid":"4146d01.5707f3","event":"node.debug.receive","msgid":"86c8212c.4ef45","timestamp":1489067873393}
每 15 秒记录一次内存使用情况。
9 Mar 13:56:24 - [metric] {"level":99,"event":"runtime.memory.rss","value":97517568,"timestamp":1489067784815}
9 Mar 13:56:24 - [metric] {"level":99,"event":"runtime.memory.heapTotal","value":81846272,"timestamp":1489067784817}
9 Mar 13:56:24 - [metric] {"level":99,"event":"runtime.memory.heapUsed","value":59267432,"timestamp":1489067784817}
audit
当设置为 true
时,管理员 HTTP API 访问事件将被记录。事件包括
额外信息,例如被访问的端点、IP 地址和时间戳。
如果启用了 adminAuth
,事件将包括请求用户的信息。
9 Mar 13:49:42 - [audit] {"event":"library.get.all","type":"flow","level":98,"path":"/library/flows","ip":"127.0.0.1","timestamp":1489067382686}
9 Mar 14:34:22 - [audit] {"event":"flows.set","type":"full","version":"v2","level":98,"user":{"username":"admin","permissions":"write"},"path":"/flows","ip":"127.0.0.1","timestamp":1489070062519}
还可以使用自定义日志模块。例如,metrics
输出可以
被发送到一个单独的系统以监控系统的性能。
要使用自定义记录器,需在您的 设置文件的日志属性中添加一个新块:
// 配置日志输出
logging: {
// 控制台日志记录
console: {
level: "info",
metrics: false,
audit: false
},
// 自定义记录器
myCustomLogger: {
level: 'debug',
metrics: true,
handler: function(settings) {
// 在记录器初始化时调用
// 返回日志记录函数
return function(msg) {
console.log(msg.timestamp, msg.event);
}
}
}
}
level
、metrics
和 audit
属性与控制台日志记录相同。
handler
属性定义了自定义日志处理程序。它是一个在启动时调用的函数,传入记录器的配置。它必须
返回一个将与日志消息一起调用的函数。
可以配置多个自定义记录器 — 唯一保留的名称是 console
。
以下示例添加了一个自定义记录器,该记录器通过 TCP 连接将指标事件发送到 Logstash 实例。
这是一个非常快速和简单的示例 - 没有错误处理或重新连接逻辑。
logging: {
console: {
level: "info",
metrics: false,
audit: false
},
logstash: {
level:'off',
metrics:true,
handler: function(conf) {
var net = require('net');
var logHost = '192.168.99.100',logPort = 9563;
var conn = new net.Socket();
conn.connect(logPort,logHost)
.on('connect',function() {
console.log("记录器已连接")
})
.on('error', function(err) {
// 在真实环境中应尝试重新连接
// 这个示例只是退出...
process.exit(1);
});
// 返回将做实际日志记录的函数
return function(msg) {
var message = {
'@tags': ['node-red', 'test'],
'@fields': msg,
'@timestamp': (new Date(msg.timestamp)).toISOString()
}
try {
conn.write(JSON.stringify(message)+"\n");
}catch(err) { console.log(err);}
}
}
}
}
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策