如何使用带有 Intellij(Haskell 插件)的 scotty 登录终端?
How to log to terminal using scotty with Intellij (Haskell plugin)?
所以我遇到了一些奇怪的事情。这是一个说明性代码示例:
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 来创建它,然后 运行ning 它),一切正常 - "I'm about to serve a request!" 打印到每次我输入 "localhost:8000/"
命令提示符终端
想通了。需要制作一个记录器如下:
logger <- mkRequestLogger def {
outputFormat = CustomOutputFormat (\_ _ _ _ -> "")
}
这样生成的代码将如下所示:
main :: IO ()
main
= do
logger <- mkRequestLogger def {
outputFormat = CustomOutputFormat (\_ _ _ _ -> "")
}
scotty 8000 $ do
middleware logger
-- do stuff here
CustomOutputFormat 忽略所有其他传入信息,只关注您要打印到控制台的内容。
所以我遇到了一些奇怪的事情。这是一个说明性代码示例:
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 来创建它,然后 运行ning 它),一切正常 - "I'm about to serve a request!" 打印到每次我输入 "localhost:8000/"
命令提示符终端想通了。需要制作一个记录器如下:
logger <- mkRequestLogger def {
outputFormat = CustomOutputFormat (\_ _ _ _ -> "")
}
这样生成的代码将如下所示:
main :: IO ()
main
= do
logger <- mkRequestLogger def {
outputFormat = CustomOutputFormat (\_ _ _ _ -> "")
}
scotty 8000 $ do
middleware logger
-- do stuff here
CustomOutputFormat 忽略所有其他传入信息,只关注您要打印到控制台的内容。