我创建了一个默认的SAFE应用,如here所述。 删除多余的东西,服务器是这样的:
open Giraffe
open Saturn
let webApp = scope {
get "/api/init" (fun next ctx ->
task {
let number = 42
let! counter = task { return number }
return! Successful.OK counter next ctx
})
}
let app = application {
url ("http://0.0.0.0:8085/")
router webApp
memory_cache
use_static "../Client/public"
use_gzip
}
run app
现在,当运行应用程序时,我在控制台中看到一些日志记录,基本上是传入的请求:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:8085/api/init
如何自定义日志记录? docs尽可能稀缺,没有示例。我需要一些简单的东西,例如记录“将要返回42 ...”。 或至少与案例有一些联系。
答案 0 :(得分:2)
您可以从上下文ctx
中拉出完全爆炸的ILogger对象。
打开Microsoft.Extensions.Logging
模块,然后您可以执行以下操作:
let webApp = scope {
get "/api/init" (fun next ctx ->
task {
let logger = ctx.GetLogger();
let number = 42
logger.Log(LogLevel.Information, "Going to return " + number.ToString())
let! counter = task { return number }
return! Successful.OK counter next ctx
})
}
这将带到您的控制台:
info: object[0]
Going to return 42
我没有任何适当的参考文献。我在Giraffe的Github服务器上发现了一个类似的thing,而Saturn基本上是一组抽象。
答案 1 :(得分:0)
至少v0.9中内置了日志记录配置。我为自己使用了以下情况,以抑制大部分日志记录。
std::cout << "* " << line << "*\n";