主題の通り、Windows10 の環境にて、 mosquitto のブローカーのログをファイルに出力する方法です。
公式な手順(ただし Windows10 ではうまくいかない・・・)
まず、公式にログ出力に関する設定方法が書かれています。
大まかな手順としては
mosquitto.conf
のlog_dest
属性に出力するファイルパスを設定する- ブローカーを
mosquitto -c <mosquitto.confのパス>
で起動する
という感じっぽいです。
しかし、肝心の log_dest
に記載する内容ですが、syslog
というオプションがありますが、これは調べた感じ Windows では有効にならない?のか、どこかに出力されているのかわかりませんでした。
他に file *****.txt
という方法があるみたいですが、こちらもうまくいきませんでした。
実際に以下のように mosquitto.conf
を設定してみました。
(mosquitto.conf の抜粋)
log_dest file C:\Users\XXXX\Documents\mosquitto.log
しかし、ブローカー起動時に以下のように起こられてしまいました。
C:\Program Files (x86)\mosquitto>mosquitto -c mosquitto.conf
1540507934: Error: Unable to open log file C:\Users\XXXX\Documents\mosquitto.log for writing.
権限系なのかといろいろ試しましたが、やっぱりうまくいきませんでした。
ググってみると、Windows 以外ではそこそこ情報がみつかるのですが、 Windows に関する情報は有力なものはみつけられませんでした・・・
他の手法
そこで、代替手段となりますが、 StackOverflow に Windows 環境での ログ出力手段について情報がありました。
これは、ブローカーのログ出力というよりは、全メッセージを受信するクライアントを立ち上げて、そのクライアントがメッセージをファイル出力という感じっぽいです。
これはあくまでトピックのみを対象としたログになるので、ブローカーの動作ログとは程遠いものですが・・・
一応手順的には以下の感じです。(そのまま日本語にしているだけですが)
- 以下の内容を
timestampLog.vbs
に記述して保存する
Dim str
Do While Not WScript.StdIn.AtEndOfStream
str = WScript.StdIn.ReadLine
WScript.StdErr.WriteLine "[" & now & "]" & str
Loop
-
ブローカーを起動する
-
クライアントを、以下の通りにして起動する
C:\Program Files\mosquitto>mosquitto_sub -t +/# -v | cscript //nologo timestampLog.vbs 2> C:\*USER*\Desktop\logfile.txt
これで、上記であれば C:\*USER*\Desktop\logfile.txt
にトピックのログが出力されるようになります。
うーん、これがしたかったわけじゃないんだけどなぁ・・・
追記
Windows でログのファイル出力ができないことは既知の問題だったみたいです。
なんか読んだ感じ、対応されないっぽい感じします。
残念です・・・
コメント