2017-06-03 15 views
1

私は何か奇妙なことが起こっている。ここでは説明のコードの例を以下に示します。Intellij(Haskellプラグイン)でscottyを使用して端末にログインする方法は?

main :: IO() 
main 
= do 
    scotty 8000 $ do 
     get "/" serve 
where 
    serve :: ActionM() 
    serve = do 
    liftIO $ print "I'm about to serve a request!" 

私のメッセージは、IntelliJのコンソールに印刷する必要があり、私は「localhostを:8000 /」と入力するたびに、それはしません。しかし、私はscottyのものをコメントし、ちょうど持っている:

main :: IO() 
main 
= do print "Hello World!" 

IntelliJはこれを印刷しても問題ありません。私は間違って何をしていますか? Windowsのコマンドプロンプトを使用して実行可能ファイルを実行すると(たとえば、ghc --makeを作成して実行すると)、すべて正常に動作します - 「私はリクエストを提供しようとしています!コマンドプロンプトのターミナルに毎回印刷します。「localhost:8000 /」と入力してください。

+0

scottyスタック内にstdoutをリダイレクトするものがありますか?ロギングのためにそれをキャプチャし、stderrでそれを出力するかもしれませんか?私はintellijに慣れていないよ – jberryman

+0

あなたは正しい、そうだった。ちょうど私自身の質問に答えました。とても腹立たしい... – Enis

答えて

0

次のようにロガーを作るために必要な:

logger <- mkRequestLogger def { 
    outputFormat = CustomOutputFormat (\_ _ _ _ -> "") 
    } 

結果のコードは次のようになりますように:唯一のコンソールに印刷する内容に

main :: IO() 
main 
= do 
    logger <- mkRequestLogger def { 
     outputFormat = CustomOutputFormat (\_ _ _ _ -> "") 
     } 
    scotty 8000 $ do 
     middleware logger 
     -- do stuff here 

CustomOutputFormatを中心に、他のすべての着信情報を無視。

関連する問題