Tenho uma pergunta anterior e, para me aproximar de uma solução, quero habilitar o log do broker do Mosquitto no Windows 7.
Originalmente, iniciei o broker manualmente da seguinte maneira:
mosquitto -p 1883 -v
-v
significa log detalhado do console. Mas isso não fornece informações suficientes, apenas a seguinte linha no caso do meu problema:
1486293976: Socket error on client <unknown>, disconnecting.
Eu tentei fazer o que está descrito nesta resposta . Aqui está a parte de log do arquivo de configuração:
# 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
Nesse caso, iniciei o broker da seguinte maneira:
mosquitto -p 1883
-v
A opção substituiria o arquivo de configuração pela configuração padrão, por isso deixei de fora. Mas não vejo log no console.
Em vez de stdout
eu tentar fazer logon em um arquivo, e alterei a configuração da seguinte maneira:
log_dest file d:\mosquitto.txt
Criei o arquivo manualmente e iniciei o broker da mesma maneira, mas sem sucesso.
Não recebo nenhuma mensagem de log se não usar a -v
opção Como isso deve ser feito corretamente?
fonte
log_type debug
oulog_type all
fornece mais informações?-v
opção fornece algumas entradas de log no console (cmd), mas que usa a configuração padrão.Respostas:
Isto é o que eu faço. Script a seguir salvo como timestampLog.vbs:
Então eu executo isso na linha de comando:
Onde você pode alterar o caminho para sua pasta mosquiteiro e altere o caminho "logfile.txt" para o que quiser.
Se é isso que você está procurando, não sei, mas outra pessoa pode gostar da solução fornecida aqui. Para quebrar a linha de comando:
C:\Program Files\mosquitto>
é a pasta local do Mosquittomosquitto_sub
é o arquivo .exe usado para ouvir o broker-t +/#
"-t" é dar o arquivo .exe a informação para ouvir t OPIC de + / # que é todos tópicos de clientes. "#" significaria todos os tópicos, mesmo os tópicos criados pelo broker. \ $ SYS / # ouvirá apenas os tópicos do intermediário. É possível ter múltiplos -t (eu acho).-v
é fornecer ao arquivo .exe as informações para exibir os tópicos detalhadamente, ou seja, também gerar o próprio tópico (não apenas seu valor).|
é canalizar esse primeiro comando no comando de script.cscript //nologo timestampLog.vbs
é executar o cscript.exe com o script vbs que escrevemos anteriormente.//nologo
está dizendo ao prompt da linha de comando para exibir as informações de saída do cscript.exe em um arquivo externo, em vez do próprio prompt.2>
está dizendo ao prompt da linha de comando para emitir "StdErr" (que foi o que pedimos ao script para canalizar todas as mensagens no arquivo .vbs).C:\*USER*\Desktop\logfile.txt
é o caminho e o nome do arquivo da saída. Em vez de .txt, você pode considerar usar .log ou outra coisa.fonte
A resposta desta pergunta: Como habilitar WebSockets no Mosquitto em execução no Windows? realmente respondeu a essa pergunta também.
Como se viu, o arquivo de configuração do Mosquitto deve ser adicionado explicitamente na linha de comando.
Depois disso, consegui obter informações adicionais sobre eventos de erro de soquete ou algo assim.
fonte
carga útil do log
Se você deseja registrar a carga útil da mensagem PUBLISH, aqui eu adiciono o registro de custo no mosquitto v1.5.3 souce:
Fonte no Git Hub .
// mostra apenas a carga útil ASCII, os dados binários talvez quebraram o terminal.
uso em mosquitto.conf:
carga útil do log_type
resultado
log tornar-se:
fonte
Descobri isso há um tempo, mas não consigo atribuir ao autor original. Funciona muito bem para logs existentes, mas não pode 'tail -f' com esta solução:
sudo cat /var/log/mosquitto/mosquitto.log | grep -v datab|perl -pe 's/(\d+)/localtime($1)/e'
Usando isso no linux, mas deve funcionar no WSL / cygwin.
fonte
cat
portail -f
? e se não, então o gato é redundante e você deve deixar o grep abrir o arquivo