如何在 F# Saturn 框架中自定义日志记录?
How to customize logging in F# Saturn framework?
我按照 here 所述创建了一个默认的 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
如何自定义日志记录? docs 尽量稀少,没有例子。我需要一些简单的东西,比如记录 "going to return 42..."。
或者至少与案例有一些联系。
您可以从上下文中提取完全成熟的 ILogger 对象,ctx
。
打开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 基本上是一组抽象。
日志配置至少内置于 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)
}
我按照 here 所述创建了一个默认的 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
如何自定义日志记录? docs 尽量稀少,没有例子。我需要一些简单的东西,比如记录 "going to return 42..."。 或者至少与案例有一些联系。
您可以从上下文中提取完全成熟的 ILogger 对象,ctx
。
打开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 基本上是一组抽象。
日志配置至少内置于 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)
}