wookay / Bukdu.jl

Bukdu 🌌 is a web development framework for Julia
Other
139 stars 14 forks source link

is any simple way how to extend the logging message in Bukdu? #116

Open wookay opened 3 years ago

wookay commented 3 years ago
Roman Samarev
Hi, is any simple way how to extend the logging message in Bukdu? I need to add a date/time
log(str) = "$(Dates.format(Dates.now(), "yyyy-mm-dd HH:MM:SS")): $(str)"
wookay commented 3 years ago
using Bukdu # Plug plug
using Logging: AbstractLogger
using Dates
using HTTP

struct MyLogger <: AbstractLogger
    stream
end

function Plug.Loggers.info_response(logger::MyLogger, conn::Conn, route::Bukdu.RouteAction)
    io = logger.stream
    Base.print(io, "$(Dates.format(Dates.now(), "yyyy-mm-dd HH:MM:SS")): ")
    Plug.Loggers.default_info_response(io, conn, route)
    Base.flush(io)
end

function Plug.Loggers.print_message(logger::MyLogger, args...; kwargs...)
    io = logger.stream
    Base.print(io, "$(Dates.format(Dates.now(), "yyyy-mm-dd HH:MM:SS")): ")
    Base.println(io, args...; kwargs...)
    Base.flush(io)
end

plug(MyLogger, stdout)

Bukdu.start(8193)

routes() do
    get("/") do conn::Conn
        render(Text, "ok")
    end
end

HTTP.get("http://127.0.0.1:8193/")
Bukdu.stop()
wookay commented 3 years ago

see also https://github.com/wookay/Bukdu.jl/blob/master/test/bukdu/plugs/loggers.jl