コンテナのログは、標準エラー出力 (stderr)に記録されます。
一方、「|」で記述するパイプラインは、標準出力(stdout)で機能します。
コンテナのログをパイプラインで受け取れるように、
標準エラー出力を標準出力へと出力先を2>&1で変更します。
これで、パイプ後のgrepコマンドが動くようになります。
docker logs app 2>&1 | grep "test"
ちなみに、2>&1を省略した形として、次のように記載することもできます。
docker logs app |& grep "test"