Làm cách nào để kích hoạt ghi nhật ký chi tiết của nhà môi giới Mosquitto trên Windows 7?


8

Tôi có một câu hỏi trước đây và để đến gần hơn với một giải pháp tôi muốn kích hoạt đăng nhập môi giới Mosquitto trên Windows 7.

Ban đầu tôi đã bắt đầu môi giới bằng tay như sau:

mosquitto -p 1883 -v

-vcó nghĩa là đăng nhập bảng điều khiển dài dòng. Nhưng điều này không cung cấp đủ thông tin, chỉ có dòng sau đây trong trường hợp vấn đề của tôi:

1486293976: Socket error on client <unknown>, disconnecting.

Tôi đã cố gắng làm những gì được mô tả trong câu trả lời này . Đây là phần đăng nhập của tập tin cấu hình:

# 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

Trong trường hợp này tôi đã bắt đầu môi giới như sau:

mosquitto -p 1883

-vtùy chọn sẽ ghi đè tập tin cấu hình với cấu hình mặc định vì vậy tôi đã bỏ nó. Nhưng tôi thấy không có đăng nhập trên bàn điều khiển.


Thay vì stdouttôi đã cố gắng đăng nhập vào một tập tin và thay đổi cấu hình như sau:

log_dest file d:\mosquitto.txt

Tôi đã tạo tệp theo cách thủ công và bắt đầu môi giới theo cách tương tự nhưng không có kết quả.


Tôi không nhận được bất kỳ thông điệp tường trình nào nếu tôi không sử dụng -vtùy chọn này. Làm thế nào nó nên được thực hiện đúng?


log_type debughoặc log_type allcung cấp cho bạn thêm thông tin?
Aurora0001

1
@ Aurora0001 Bất kể tôi cài đặt gì trong tệp cấu hình, tôi không nhận được kết quả đăng nhập. Chỉ có -vtùy chọn cung cấp một số mục nhật ký trên bàn điều khiển (cmd) nhưng sử dụng cấu hình mặc định.
Bence Kaulics

Câu trả lời:


8

Đây là những gì tôi làm. Tập lệnh sau được lưu dưới dạng dấu thời gianLog.vbs:

Dim str
Do While Not WScript.StdIn.AtEndOfStream
  str = WScript.StdIn.ReadLine
  WScript.StdErr.WriteLine "[" & now & "]" & str
Loop

Sau đó, tôi chạy này từ dòng lệnh:

C:\Program Files\mosquitto>mosquitto_sub -t +/# -v | cscript //nologo timestampLog.vbs 2> C:\*USER*\Desktop\logfile.txt

Trường hợp bạn có thể muốn thay đổi đường dẫn đến thư mục mosquitto của mình và thay đổi đường dẫn "logfile.txt" thành bất cứ điều gì bạn muốn.

Nếu đây là những gì bạn đang tìm kiếm thì tôi không biết nhưng người khác có thể thích giải pháp được cung cấp ở đây. Để ngắt dòng lệnh:

C:\Program Files\mosquitto> là thư mục cục bộ cho Mosquitto

mosquitto_sub là tập tin .exe được sử dụng để lắng nghe người môi giới

-t +/#"-T" là cung cấp cho tệp .exe thông tin để nghe t opic của + / # là tất cả các chủ đề từ máy khách. "#" Có nghĩa là tất cả các chủ đề, ngay cả các chủ đề được môi giới tạo ra. \ $ SYS / # sẽ chỉ nghe chủ đề môi giới. Có thể có nhiều -t (tôi nghĩ).

-v là cung cấp cho tệp .exe thông tin để xuất ra các chủ đề dài dòng, tức là cũng tự xuất chủ đề (không chỉ giá trị của nó).

| là để chuyển lệnh đầu tiên này vào lệnh script.

cscript //nologo timestampLog.vbslà để thực thi cscript.exe với tập lệnh vbs mà chúng ta đã viết trước đó. //nologođang nói với dấu nhắc dòng lệnh để xuất thông tin đầu ra cscript.exe vào một tệp bên ngoài thay vì chính dấu nhắc đó.

2> đang nói với dấu nhắc dòng lệnh để xuất "StdErr" (đó là những gì chúng ta đã nói với tập lệnh để phễu tất cả các thông báo đến trong tệp .vbs).

C:\*USER*\Desktop\logfile.txtlà đường dẫn và tên tệp của đầu ra. Thay vì .txt, bạn có thể cân nhắc sử dụng .log hoặc một cái gì đó khác.


4

Câu trả lời của câu hỏi này: Làm cách nào để bật WebSockets trên Mosquitto chạy trên Windows? thực sự đã trả lời câu hỏi này

Khi nó bật ra tập tin cấu hình của Mosquitto phải được thêm vào một cách rõ ràng trong dòng lệnh.

Khi bạn chạy mosquitto từ dòng lệnh, bạn phải trỏ rõ ràng đến tệp cấu hình với tùy chọn -c

mosquitto -v -c /path/to/mosquitto.conf

Sau này, tôi đã có thể có được thông tin bổ sung về các sự kiện lỗi ổ cắm hoặc như vậy.

1489438223: mosquitto phiên bản 1.4.10 (ngày xây dựng 24/08/2016 21: 03: 24.73) bắt đầu

1489438223: Cấu hình được tải từ mosquitto.conf.

1489438223: Mở ổ cắm nghe ipv6 trên cổng 1883.

1489438223: Lỗi: Chỉ cho phép sử dụng một địa chỉ của từng địa chỉ ổ cắm (giao thức / địa chỉ mạng / cổng).

1489438341: mosquitto phiên bản 1.4.10 (ngày xây dựng 24/08/2016 21: 03: 24.73) bắt đầu

1489438341: Cấu hình được tải từ mosquitto.conf.

1489438341: Mở ổ cắm nghe ipv6 trên cổng 1883.

1489438341: Mở ổ cắm nghe ipv4 trên cổng 1883.

1489438363: Kết nối mới từ 192.168.1.4 trên cổng 1883.

1489438363: Máy khách mới được kết nối từ 192.168.1.4 dưới dạng root.1489438369381 (c1, k60, u'phone ').

1489438363: Gửi CONNACK đến root.1489438369381 (0, 0)

1489438363: Đã nhận SUBSCRIBE từ root.1489438369381

1489438363: phòng / độ ẩm (QoS 1)

1489438363: root.1489438369381 1 phòng / độ ẩm

1489438363: Gửi> ĐĂNG KÝ vào root.1489438369381

1489438453: Root máy khách.1489438369381 đã vượt quá thời gian chờ, ngắt kết nối.

1489438453: Lỗi ổ cắm trên máy khách gốc.1489438369381, ngắt kết nối.


3
  1. đăng nhập tải

    Nếu bạn muốn đăng nhập tải trọng thông báo CÔNG CỘNG, ở đây tôi thêm nhật ký lưu trữ trong mosquitto v1.5.3 souce:

    Nguồn trên Git Hub .

    // chỉ hiển thị tải trọng ASCII, dữ liệu nhị phân có thể đã phá vỡ thiết bị đầu cuối.

  2. sử dụng trong mosquitto.conf:

    tải trọng log_type

  3. kết quả

    đăng nhập trở thành:

    1542293777: Received PUBLISH from client_20454 (d0, q0, r0, m0, '$rpc/device1/client_20454/25MhY4xUwiMZIuytfb89Vjrh4QU=/req', ... (64 bytes))
    1542293777: > payload: '{"method":"ServerExposed.Ping","params":[{"Num":20454}],"id":0}'
    1542293777: Sending PUBLISH to device1 (d0, q0, r0, m0, '$rpc/device1/client_20454/25MhY4xUwiMZIuytfb89Vjrh4QU=/req', ... (64 bytes))
    
    1542293777: Received PUBLISH from device1 (d0, q0, r0, m0, '$rpc/device1/client_20454/25MhY4xUwiMZIuytfb89Vjrh4QU=/res', ... (57 bytes))
    1542293777: > payload: '{"id":0,"result":{"Done":true,"Num":20454},"error":null}'
    1542293777: Sending PUBLISH to client_20454 (d0, q0, r0, m0, '$rpc/device1/client_20454/25MhY4xUwiMZIuytfb89Vjrh4QU=/res', ... (57 bytes))
    

1
Điều gì xảy ra khi bạn xuất bản một tải trọng nhị phân?
hardillb

oh, chỉ được thử nghiệm với tải trọng ascii, nhị phân có thể đã phá vỡ thiết bị đầu cuối, quên nói
yurenchen

2

Tôi đã tìm thấy điều này một thời gian trước nhưng tôi không thể gán cho tác giả ban đầu. Hoạt động tuyệt vời cho các bản ghi hiện có, nhưng không thể 'đuôi' với giải pháp này:

sudo cat /var/log/mosquitto/mosquitto.log | grep -v datab|perl -pe 's/(\d+)/localtime($1)/e'

Sử dụng điều này trên linux, nhưng sẽ hoạt động trên WSL / cygwin.


2
Tại sao bạn không thể trao đổi catcho tail -f? và nếu không thì con mèo là dư thừa và bạn chỉ nên để grep mở tệp
hardillb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.