【发布时间】:2020-02-06 20:22:11
【问题描述】:
我有一个 Java 程序在 IOT 设备上收集能量数据,它通过 MQTT 将其发送到 Node-RED 以存储在 InFlux 上并通过 Grafana 呈现。我还通过 MQTT 将关于单独主题的简单日志消息发送到 Node-RED 以进行调试。我可以通过 SSH 在我的 IOT 设备(RPi 零 W)上获取控制台,但它非常缓慢且不可靠。我想使用 java 系统记录器进行记录,但我希望将输出格式化为可读字符串或 json 并发送到我在 MQTT 代理上指定的主题。 那么是否有可用的日志处理程序来执行此操作,或者我将如何编写一个?
我当前的记录器如下所示,并从共享的字符串队列中获取日志消息
public class PMLogger extends Thread
{
String msg;
LinkedBlockingQueue<String> loggingQ;
public PMLogger(LinkedBlockingQueue<String> logQ)
{
this.loggingQ = logQ;
}
//
// Runnable implementation
//
@Override
public void run()
{
try {
Thread.sleep(1000); // wait for publisher to be set up
} catch (InterruptedException e) {
e.printStackTrace();
}
MQTTHandler publisher = Main.getMqttHandler();
String json;
boolean exit = false;
try {
while (!(interrupted() || exit)) {
msg = loggingQ.take();
if (msg.equalsIgnoreCase("exit")) {
exit = true;
} //poison pill
json = "{\"Time\":" +
"\"" + Instant.now().toString() + "\"," +
"\"LogMsg\":" +
"\"" + msg + "\"}";
publisher.logToBroker(json);
Thread.sleep(10);
}
} catch (InterruptedException | NullPointerException e) {
e.printStackTrace();
exit = true;
}
}
}
我发现 loggly.com 在解释术语时很有用,通读之后,我相信我正在寻找一个与 MQTT 一起使用的附加程序
【问题讨论】:
-
我在 github 上看到 log4j to mqtt appender:github.com/radekg/log4mqtt(我没试过)
-
我快速浏览了一下,但它没有维护,也不是最新的。我希望使用标准记录器的前端,但使用 MQQT 处理程序重定向后端,所以这是在正确的球场,谢谢