Как перенаправить вывод MQTT из регистратора java в topi c на указанном брокере MQTT c - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть 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

1 Ответ

0 голосов
/ 06 февраля 2020

SLF4J - хороший выбор для всего, что связано java с журналированием, нет необходимости заново изобретать колесо. Вы можете войти в любой формат файла.

...