前回、mosquitto ブローカーのログをファイル出力する方法を探りました。
Windows 環境下で mosquitto Broker のログをファイル出力する
だいぶ前ですが、Windows10 にて mosquitto ブローカーのログをファイル出力する方法を探りました。mosquitto にはブローカーのログをファイル出力する機能があるのですが、現状 Windows 環境下においては対応し...
今回は、その出力内容を加工する方法を探ります。
やりたいこと
前回で mosquitto のログをファイル出力できるようになったのですが、個人的には以下のログがノイズ化して邪魔です。
- Received PINGREQ from mosqsub****
- Sending PINGRESP to mosqsub****
通信状態を監視しているログなので、重要な意味はあるのですが、現状私がやりたいことはトピックのログを出したいだけなので、上記の通信状態ログは不要です。
そこで、上記のログを除去(フィルタリング)する方法を模索します。
解決方法
乱暴ですが、「PING」という単語が含まれた行が不要というわけです。
なので、この「PING」をフィルタリングします。
結論ですが、以下のようにしたらうまくいきました。
# PING が含まれる行をフィルタリングして、test.txt にログ出力する
mosquitto -v 2>&1 | find /v "PING" > test.txt
解説
流れとしては、3部構成的になってます。
mosquitto -v 2>&1
の部分- mosquitto のコマンドプロンプト出力内容を標準出力である
1
にリダイレクトする(mosquittoでは、出力が標準エラー出力のため2>
とする必要がある)
- mosquitto のコマンドプロンプト出力内容を標準出力である
| find /v "PING"
の部分- 1.で標準出力化された内容を、パイプを使ってフィルタリングします
- (※findコマンドは標準出力のみ対応みたいなので)
find /v "除外したい文字列"
とすることで、指定した文字列を除外することができます
- 1.で標準出力化された内容を、パイプを使ってフィルタリングします
> test.txt
の部分- 2.でフィルタリングされた内容を test.txt にリダイレクトして出力します
コメント