#ifndef NET_PUB_HPP
#define NET_PUB_HPP

#include <spdlog/sinks/rotating_file_sink.h>
#include <spdlog/spdlog.h>

#include <memory>
#include <mutex>

typedef std::shared_ptr<spdlog::logger> NetLog;
class CNetPub
{
public:
    static NetLog getInstance()
    {
        if (log_) {
            return log_;
        }
        mutex_->lock();
        if (log_) {
            mutex_->unlock();
            return log_;
        }
        log_ = spdlog::rotating_logger_mt("nettrans", "log/nettrans.log", 1024 * 100, 5);
        log_->set_pattern("[%Y-%m-%d %H:%M:%S.%e][%l]: %v");
        log_->set_level(spdlog::level::info);
        mutex_->unlock();
        return log_;
    }

private:
    static NetLog                      log_;
    static std::shared_ptr<std::mutex> mutex_;
};

#endif