ManagerSettings
http-conduit アプリケーションのすべての要求と応答をログに記録するために、これを作成しました。(ちなみに、私はインポートしていますClassyPrelude
)。
tracingManagerSettings :: ManagerSettings
tracingManagerSettings =
tlsManagerSettings { managerModifyRequest = \req -> do
putStr "TRACE: "
print req
putStrLn ""
pure req
, managerModifyResponse = \r -> do
responseChunks <- brConsume $ responseBody r
let fullResponse = mconcat responseChunks
putStr "TRACE: RESPONSE: "
putStrLn $ decodeUtf8 fullResponse
pure $ r { responseBody = pure fullResponse }
}
ただし、機能していません。使用すると、アプリケーションがハングし、最初の要求と最初の応答を出力した後、マシン内のすべての RAM を消費しようとします。これは、ある種の無限ループを示唆しています。
また、要求は 2 回出力されます。
私は似たような以前の試みをしましたが、変更しませんでしたr
。応答を完全に読み取った後、読み取る応答データがなくなったため、失敗しました。
これを に置き換えるとtlsManagerSettings
、http-conduit
再び機能します。
私のアプリケーションは libstackexchange を使用していますが、これをManagerSettings
カスタマイズできるように変更しました。http-conduit バージョン 2.2.4 を使用しています。
問題を診断するにはどうすればよいですか? どうすれば修正できますか?