使用yesod 1.6.2.1,当创建一个新的应用程序时(无论是使用脚手架还是使用内置的warp port foundation
),您都会得到这样的请求日志:
127.0.0.1 - - [18/Aug/2023:11:19:54 +0200] "GET / HTTP/1.1" 200 ...
我看不出它们是在哪里/如何配置的。Yesod
类型类附带了一个shouldLogIO
成员,但即使它被设置为return False
,您仍然会在每个请求上获得这些消息。虽然这些大多数都是无害的,但我至少想在测试中禁用它们,因为它们会扰乱测试运行器的输出。
实际上是什么创建了这些日志条目,以及如何配置/禁用它们?
1条答案
按热度按时间vs3odd8k1#
这些日志来自一个阿威中间件,
yesod
中的warp
助手和脚手架创建了这个中间件。默认情况下,似乎没有一个中心位置来配置它,但是可以通过简单地不包括中间件来禁用它。在脚手架站点中,这是在
TestImport.hs
中的withApp
函数中:这里只需将
(foundation, logWare)
替换为(foundation, id)
(这是可行的,因为阿威中间件只是Application -> Application
类型的函数)。类似地,在搭建的站点中,您可以从
Application.hs
中的makeApplication
中删除logWare
:当不使用搭建的站点时,要在没有默认日志中间件的情况下运行应用程序,只需做一些类似搭建的站点的事情,并通过
toWaiAppPlain
将您的基础转换为阿威应用程序,通过defaultMiddlewaresNoLogging
添加默认的中间件 * 而不使用 * 日志记录,并使用Network.Wai.Handler.Warp.run
使用warp服务器`运行最终的WAI应用程序。