Как настроить логирование в фреймворке F# Saturn?
Я создал приложение 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...". Или хотя бы несколько ссылок на дела.
1 ответ
Вы можете вытащить полностью взорванный объект 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
У меня нет никаких правильных ссылок. Я нашел похожую вещь на сервере Github of Giraffe, для которого Сатурн - это набор абстракций.
Конфигурация ведения журнала встроена как минимум в 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)
}