Saya punya pertanyaan sebelumnya dan untuk lebih dekat ke solusi saya ingin mengaktifkan broker Mosquitto login pada Windows 7.
Awalnya saya sudah memulai broker secara manual sebagai berikut:
mosquitto -p 1883 -v
-v
berarti logging konsol verbose. Tetapi ini tidak memberikan informasi yang cukup, hanya baris berikut jika ada masalah saya:
1486293976: Socket error on client <unknown>, disconnecting.
Saya telah mencoba melakukan apa yang dijelaskan dalam jawaban ini . Berikut adalah bagian logging file config:
# 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
Dalam hal ini saya telah memulai broker sebagai berikut:
mosquitto -p 1883
-v
Opsi akan menimpa file konfigurasi dengan konfigurasi default jadi saya telah meninggalkan itu. Tapi saya tidak melihat logging di konsol.
Alih-alih stdout
saya mencoba masuk ke file, dan mengubah konfigurasi sebagai berikut:
log_dest file d:\mosquitto.txt
Saya telah membuat file secara manual dan memulai broker dengan cara yang sama tetapi tidak berhasil.
Saya tidak mendapatkan pesan log apa pun jika saya tidak menggunakan -v
opsi. Bagaimana seharusnya itu dilakukan dengan benar?
sumber
log_type debug
ataulog_type all
memberi Anda informasi lebih lanjut?-v
opsi yang memberikan beberapa entri log pada konsol (cmd) tetapi yang menggunakan konfigurasi default.Jawaban:
Inilah yang saya lakukan. Script berikut disimpan sebagai timestampLog.vbs:
Lalu saya menjalankan ini dari baris perintah:
Di mana Anda mungkin ingin mengubah jalur ke folder mosquitto Anda dan mengubah jalur "logfile.txt" ke apa pun yang Anda inginkan.
Jika ini yang Anda cari, saya tidak tahu, tetapi orang lain mungkin menyukai solusi yang disediakan di sini. Untuk memecah baris perintah:
C:\Program Files\mosquitto>
adalah folder lokal untuk Mosquittomosquitto_sub
adalah file .exe yang digunakan untuk mendengarkan broker-t +/#
"-t" adalah untuk memberikan .exe file informasi untuk mendengarkan t OPIC dari + / # yang semua topik dari klien. "#" berarti semua topik, bahkan topik yang dibuat broker. \ $ SYS / # hanya akan mendengarkan topik broker. Dimungkinkan untuk memiliki multiple -t (saya pikir).-v
adalah untuk memberikan file .exe informasi untuk menampilkan topik yang bertele-tele, yaitu juga menampilkan topik itu sendiri (tidak hanya nilainya).|
adalah untuk menyalurkan perintah pertama ini ke perintah skrip.cscript //nologo timestampLog.vbs
adalah untuk mengeksekusi cscript.exe dengan skrip vbs yang sebelumnya kita tulis.//nologo
memberitahu prompt baris perintah untuk menampilkan informasi output cscript.exe menjadi file eksternal, bukan prompt itu sendiri.2>
memberitahu command line prompt untuk menampilkan "StdErr" (yang kami beri tahu skrip untuk menyalurkan semua pesan ke dalam file .vbs).C:\*USER*\Desktop\logfile.txt
adalah path dan nama file dari output. Alih-alih .txt Anda mungkin mempertimbangkan untuk menggunakan .log atau sesuatu yang lain.sumber
The jawaban dari pertanyaan ini: Bagaimana mengaktifkan WebSockets di mosquitto berjalan pada Windows? sebenarnya menjawab pertanyaan ini juga.
Ternyata file konfigurasi Mosquitto harus ditambahkan secara eksplisit di baris perintah.
Setelah ini saya bisa mendapatkan informasi tambahan tentang peristiwa kesalahan soket atau semacamnya.
sumber
muatan log
Jika Anda ingin mencatat payload pesan PUBLISH, di sini saya menambahkan custome log di mosquitto v1.5.3 souce:
Sumber di Git Hub .
// hanya tampilkan payload ASCII, data biner mungkin merusak terminal.
penggunaan di mosquitto.conf:
log_type payload
hasil
log menjadi:
sumber
Saya menemukan ini beberapa waktu lalu, tetapi saya tidak dapat menghubungkan ke penulis asli. Berfungsi bagus untuk log yang ada, tetapi tidak bisa 'cocok' dengan solusi ini:
sudo cat /var/log/mosquitto/mosquitto.log | grep -v datab|perl -pe 's/(\d+)/localtime($1)/e'
Menggunakan ini di linux, tetapi harus bekerja pada WSL / cygwin.
sumber
cat
untuktail -f
? dan jika tidak maka kucing itu mubazir dan Anda harus membiarkan grep membuka file