gpt4 book ai didi

java - 如何将 java 记录器输出 MQTT 重定向到特定 MQTT 代理上的主题

转载 作者:行者123 更新时间:2023-12-01 18:33:51 25 4
gpt4 key购买 nike

我有一个 java 程序,收集 IOT 设备上的能源数据,它通过 MQTT 将其发送到 Node-RED,以便存储在 InFlux 上并通过 Grafana 进行呈现。我还通过 MQTT 将单独主题的简单日志消息发送到 Node-RED 以进行调试。我可以通过 SSH 在我的 IOT 设备(RPi Zero 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 一起使用的附加程序

最佳答案

SLF4J对于任何与 java 日志记录相关的事情来说,这是一个不错的选择,无需重新发明轮子。您可以以任何您想要的文件格式登录。

关于java - 如何将 java 记录器输出 MQTT 重定向到特定 MQTT 代理上的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60102919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com