add logger
This commit is contained in:
parent
6c0b34a199
commit
de5c600092
|
@ -37,6 +37,8 @@ add_executable(hello_async
|
|||
src/handlers/GetMapByIdHandler.h
|
||||
src/handlers/GetStaticAssetHandler.cpp
|
||||
src/handlers/GetStaticAssetHandler.h
|
||||
src/routes.h)
|
||||
src/routes.h
|
||||
src/Logger.h
|
||||
src/Logger.cpp)
|
||||
target_include_directories(hello_async PUBLIC ${Boost_INCLUDE_DIR})
|
||||
target_link_libraries(hello_async PRIVATE Threads::Threads Boost::filesystem Boost::json)
|
||||
|
|
5
main.cpp
5
main.cpp
|
@ -8,8 +8,10 @@
|
|||
#include <thread>
|
||||
#include <vector>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
#include "src/http_server.h"
|
||||
#include "src/Logger.h"
|
||||
#include "src/routes.h"
|
||||
#include "src/handlers/GetMapsHandler.h"
|
||||
#include "src/handlers/GetMapByIdHandler.h"
|
||||
|
@ -90,6 +92,9 @@ void RunWorkers(unsigned n, const Fn& fn)
|
|||
|
||||
int main()
|
||||
{
|
||||
Logger::GetInstance().SetOutStream(cout);
|
||||
Logger::GetInstance().Log("Qwerty"s, 2, 3, 14);
|
||||
|
||||
const unsigned num_threads = std::thread::hardware_concurrency();
|
||||
|
||||
net::io_context ioc(num_threads);
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <ctime>
|
||||
|
||||
#include "Logger.h"
|
||||
|
||||
namespace http_server
|
||||
{
|
||||
Logger& Logger::GetInstance()
|
||||
{
|
||||
static Logger s_Instance;
|
||||
|
||||
return s_Instance;
|
||||
}
|
||||
|
||||
void Logger::SetOutStream(ostream& stream)
|
||||
{
|
||||
stream_ptr_ = &stream;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
#pragma once
|
||||
#include "sdk.h"
|
||||
// boost.beast будет использовать std::string_view вместо boost::string_view
|
||||
#define BOOST_BEAST_USE_STD_STRING_VIEW
|
||||
|
||||
#include <mutex>
|
||||
|
||||
#include "session.h"
|
||||
|
||||
namespace http_server
|
||||
{
|
||||
using namespace std;
|
||||
|
||||
class Logger
|
||||
{
|
||||
mutex mtx_;
|
||||
ostream* stream_ptr_;
|
||||
|
||||
Logger() = default;
|
||||
|
||||
public:
|
||||
static Logger& GetInstance();
|
||||
|
||||
void SetOutStream(ostream& stream);
|
||||
|
||||
auto GetTimeStamp()
|
||||
{
|
||||
const auto now = std::chrono::system_clock::now();
|
||||
const auto t_c = std::chrono::system_clock::to_time_t(now);
|
||||
|
||||
return std::put_time(std::localtime(&t_c), "%F %T");
|
||||
}
|
||||
|
||||
template<class First, class... Args>
|
||||
void Log(First fst, Args... args)
|
||||
{
|
||||
lock_guard guard(mtx_);
|
||||
|
||||
*stream_ptr_ << GetTimeStamp() << ": "s;
|
||||
|
||||
LogImpl(fst, args...);
|
||||
}
|
||||
|
||||
private:
|
||||
template<class First, class... Args>
|
||||
void LogImpl(First fst, Args... args)
|
||||
{
|
||||
*stream_ptr_ << fst;
|
||||
|
||||
LogImpl(args...);
|
||||
}
|
||||
|
||||
template<class First>
|
||||
void LogImpl(First fst)
|
||||
{
|
||||
*stream_ptr_ << fst;
|
||||
}
|
||||
};
|
||||
} // namespace http_server
|
Loading…
Reference in New Issue