etr / libhttpserver

C++ library for creating an embedded Rest HTTP server (and more)
GNU Lesser General Public License v2.1
894 stars 187 forks source link

Custom Access Log For Response #281

Open EverydayDiesel opened 2 years ago

EverydayDiesel commented 2 years ago

Hello,

This example shows how to get a custom access log at the time of request. How can I get the information at the response (I need the return HTTP response code ie 200, 404, 418)

    #include <httpserver.hpp>
    #include <iostream>

    using namespace httpserver;

    void custom_access_log(const std::string& url) {
        std::cout << "ACCESSING: " << url << std::endl;
    }

    class hello_world_resource : public http_resource {
    public:
        const std::shared_ptr<http_response> render(const http_request&) {
            return std::shared_ptr<http_response>(new string_response("Hello, World!"));
        }
    };

    int main(int argc, char** argv) {
        webserver ws = create_webserver(8080)
            .log_access(custom_access_log);

        hello_world_resource hwr;
        ws.register_resource("/hello", &hwr);
        ws.start(true);

        return 0;
    }
Lotharyx commented 1 year ago

More to the point: It would be a nice enhancement to have the log_access and log_error handlers take the request object as the argument (rather than std::string) so that the handler can format the log message as desired.