У меня есть java программа для сбора энергетических данных на устройстве IOT, которую она отправляет через MQTT в Node-RED для хранения на InFlux и представления через Grafana. Я также отправляю простые сообщения журнала через MQTT на отдельном topi c в Node-RED для целей отладки. Я могу получить консоль на своем устройстве IOT (RPi Zero W) через S SH, но она очень медленная и ненадежная. Я хотел бы использовать системный регистратор java для ведения журнала, но я хочу, чтобы выходные данные были отформатированы как читаемая строка или json и отправлены в topi c, который я указал в моем MQTT-брокере. Так есть ли обработчик журналов, доступный для этого, или как мне go написать его?
Мой текущий регистратор показан ниже и собирает сообщения журнала из общей очереди строк
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