Ich habe eine vorherige Frage und um einer Lösung näher zu kommen, möchte ich die Mosquitto Broker-Protokollierung unter Windows 7 aktivieren.
Ursprünglich habe ich den Broker wie folgt manuell gestartet:
mosquitto -p 1883 -v
-v
bedeutet ausführliche Konsolenprotokollierung. Dies liefert jedoch nicht genügend Informationen, nur die folgende Zeile bei meinem Problem:
1486293976: Socket error on client <unknown>, disconnecting.
Ich habe versucht, das zu tun, was in dieser Antwort beschrieben ist . Hier ist der Protokollierungsteil der Konfigurationsdatei:
# Note that if the broker is running as a Windows service it will default to
# "log_dest none" and neither stdout nor stderr logging is available.
# Use "log_dest none" if you wish to disable logging.
log_dest stdout
# If using syslog logging (not on Windows), messages will be logged to the
# "daemon" facility by default. Use the log_facility option to choose which of
# local0 to local7 to log to instead. The option value should be an integer
# value, e.g. "log_facility 5" to use local5.
#log_facility
# Types of messages to log. Use multiple log_type lines for logging
# multiple types of messages.
# Possible types are: debug, error, warning, notice, information,
# none, subscribe, unsubscribe, websockets, all.
# Note that debug type messages are for decoding the incoming/outgoing
# network packets. They are not logged in "topics".
log_type error
log_type warning
log_type notice
log_type information
# Change the websockets logging level. This is a global option, it is not
# possible to set per listener. This is an integer that is interpreted by
# libwebsockets as a bit mask for its lws_log_levels enum. See the
# libwebsockets documentation for more details. "log_type websockets" must also
# be enabled.
#websockets_log_level 0
# If set to true, client connection and disconnection messages will be included
# in the log.
connection_messages true
# If set to true, add a timestamp value to each log message.
log_timestamp true
In diesem Fall habe ich den Broker wie folgt gestartet:
mosquitto -p 1883
-v
Option würde die Konfigurationsdatei mit der Standardkonfiguration überschreiben, so dass ich das weggelassen habe. Aber ich sehe keine Protokollierung auf der Konsole.
Stattdessen habe stdout
ich versucht, mich in eine Datei einzuloggen und die Konfiguration wie folgt geändert:
log_dest file d:\mosquitto.txt
Ich habe die Datei manuell erstellt und den Broker auf die gleiche Weise gestartet, aber ohne Erfolg.
Ich erhalte keine Protokollmeldung, wenn ich die -v
Option nicht verwende . Wie soll es richtig gemacht werden?
quelle
log_type debug
oderlog_type all
geben Sie weitere Informationen?-v
Option enthält einige Protokolleinträge auf der Konsole (cmd), verwendet jedoch die Standardkonfiguration.Antworten:
Das ist was ich mache. Das folgende Skript wurde als timestampLog.vbs gespeichert:
Dann führe ich dies über die Kommandozeile aus:
Wo Sie den Pfad zu Ihrem Moskito-Ordner ändern und den Pfad "logfile.txt" nach Belieben ändern möchten.
Ob Sie danach suchen, weiß ich nicht, aber jemand anderem könnte die hier angebotene Lösung gefallen. So brechen Sie die Befehlszeile auf:
C:\Program Files\mosquitto>
ist der lokale Ordner für Mosquittomosquitto_sub
ist die EXE-Datei, die zum Abhören des Brokers verwendet wird-t +/#
„-t“ ist der EXE - Datei , die Informationen zu geben , um zu hören t opic von + / # , das alle Themen von Kunden. "#" würde alle Themen bedeuten, auch von Brokern erstellte Themen. \ $ SYS / # hört nur Brokerthemen ab. Es ist möglich, mehrere -t zu haben (glaube ich).-v
besteht darin, der EXE-Datei die Informationen zur ausführlichen Ausgabe der Themen zu geben, dh auch das Thema selbst auszugeben (nicht nur den Wert).|
ist, diesen ersten Befehl in den Skriptbefehl zu leiten.cscript //nologo timestampLog.vbs
ist, cscript.exe mit dem zuvor geschriebenen vbs-Skript auszuführen.//nologo
weist die Eingabeaufforderung an, die Ausgabeinformationen von cscript.exe in eine externe Datei anstatt in die Eingabeaufforderung selbst auszugeben.2>
weist die Eingabeaufforderung an, "StdErr" auszugeben (was wir dem Skript gesagt haben, dass alle Nachrichten in der .vbs-Datei weitergeleitet werden sollen).C:\*USER*\Desktop\logfile.txt
ist der Pfad und der Dateiname der Ausgabe. Anstelle von .txt können Sie auch .log oder etwas anderes verwenden.quelle
Die Antwort auf diese Frage: Wie aktiviere ich WebSockets unter Mosquitto unter Windows? beantwortete auch diese Frage.
Wie sich herausstellte, muss die Konfigurationsdatei des Mosquitto explizit in der Befehlszeile hinzugefügt werden.
Danach konnte ich zusätzliche Informationen über Socket-Fehlerereignisse oder ähnliches erhalten.
quelle
Nutzdaten protokollieren
Wenn Sie die Nutzdaten der PUBLISH-Nachricht protokollieren möchten, füge ich hier das Kundenprotokoll in mosquitto v1.5.3 souce hinzu:
Quelle auf Git Hub .
// nur ASCII-Nutzdaten anzeigen, Binärdaten haben möglicherweise das Terminal beschädigt.
Verwendung in mosquitto.conf:
Nutzlast log_type
Ergebnis
log werden:
quelle
Ich habe das vor einiger Zeit gefunden, kann es aber nicht dem ursprünglichen Autor zuordnen. Funktioniert hervorragend für vorhandene Protokolle, kann jedoch mit dieser Lösung nicht "tail -f":
sudo cat /var/log/mosquitto/mosquitto.log | grep -v datab|perl -pe 's/(\d+)/localtime($1)/e'
Verwenden Sie dies unter Linux, sollte aber unter WSL / Cygwin funktionieren.
quelle
cat
fürtail -f
? und wenn nicht, dann ist die Katze überflüssig und Sie sollten grep einfach die Datei öffnen lassen