1

所以我发生了一些奇怪的事情。这是一个说明性的代码示例:

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

每当我输入“localhost:8000/”时,我的消息都应该打印到 IntelliJ 控制台,但事实并非如此。然而,当我评论 scotty 的东西时,只有:

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

IntelliJ 打印出来没有问题。我究竟做错了什么?当我使用 Windows 命令提示符运行可执行文件(例如 ghc --make 创建它,然后运行它)时,一切正常 - “我即将提供请求!” 每次我输入“localhost:8000/”时都会打印到命令提示符终端

4

1 回答 1

0

弄清楚了。需要制作一个记录器,如下所示:

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

这样生成的代码将如下所示:

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

CustomOutputFormat 忽略所有其他传入信息,仅关注您要打印到控制台的内容。

于 2017-06-03T17:28:54.003 回答