mosquitto Broker の出力内容をフィルタリングしてログ出力する

MQTT

前回、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部構成的になってます。

  1. mosquitto -v 2>&1 の部分
    • mosquitto のコマンドプロンプト出力内容を標準出力である 1 にリダイレクトする(mosquittoでは、出力が標準エラー出力のため 2> とする必要がある)
  2. | find /v "PING" の部分
    • 1.で標準出力化された内容を、パイプを使ってフィルタリングします
      • (※findコマンドは標準出力のみ対応みたいなので)
    • find /v "除外したい文字列" とすることで、指定した文字列を除外することができます
  3. > test.txt の部分
    • 2.でフィルタリングされた内容を test.txt にリダイレクトして出力します

コメント

タイトルとURLをコピーしました