1

我创建了一个默认的 SAFE 应用程序,如此处所述。删除多余的东西,服务器是这样的:

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

如何自定义日志记录?文档尽可能稀缺,没有示例。我需要一些简单的东西,比如记录“将返回 42...”。或者至少有一些案例链接。

4

2 回答 2

3

您可以从上下文中拉出完全成熟的ILoggerctx对象, .

打开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

我没有任何适当的参考资料。我在 Github of Giraffe 服务器上发现了一个类似的东西,Saturn 基本上是一组抽象。

于 2018-07-09T23:10:02.323 回答
0

日志配置至少内置在 v0.9 中。我为自己使用了下面的案例来抑制大部分日志记录。

open Microsoft.Extensions.Logging

let app = application {
    url ("http://0.0.0.0:8085/")
    use_router webApp
    logging (fun logger -> logger.SetMinimumLevel LogLevel.Critical |> ignore)
}
于 2019-10-09T07:20:02.343 回答