diff --git a/.clang-format b/.clang-format index 18fbbc4..fcf706c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,7 +1,7 @@ # .clang-format # 风格格式化 -BasedOnStyle: LLVM +BasedOnStyle: Google # 4 空格缩进 IndentWidth: 4 # 连续对齐变量的声明 @@ -17,22 +17,6 @@ BraceWrapping: AfterFunction: true # class定义后面 AfterClass: true - -# 去除C++11的列表初始化的大括号{后和}前的空格 -Cpp11BracedListStyle: true -# 允许重新排版注释 -ReflowComments: true -# 允许排序#include -SortIncludes: true -# 在尾随的评论前添加的空格数(只适用于//) -SpacesBeforeTrailingComments: 3 -# tab宽度 -TabWidth: 4 -# 构造函数的初始化列表要么都在同一行,要么都各自一行 -ConstructorInitializerAllOnOneLineOrOnePerLine: true -# 每行字符的限制,0表示没有限制 -ColumnLimit: 150 -# 允许短的块放在同一行 -AllowShortBlocksOnASingleLine: false + # 是否允许短函数在一行 -AllowShortFunctionsOnASingleLine: InlineOnly \ No newline at end of file +AllowShortFunctionsOnASingleLine: None \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 47413cc..c91c804 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -111,6 +111,13 @@ "stop_token": "cpp", "thread": "cpp", "bitset": "cpp", - "variant": "cpp" + "variant": "cpp", + "any": "cpp", + "condition_variable": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "deque": "cpp", + "future": "cpp", + "shared_mutex": "cpp" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index f625e1a..12da64b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ message(STATUS "Compiler CXX ID: ${CMAKE_CXX_COMPILER_ID}") set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +include_directories(${CMAKE_SOURCE_DIR}) include_directories(3rd/spdlog-1.13.0/include) include_directories(3rd/asio-1.30.2/include) diff --git a/net_server/CMakeLists.txt b/net_server/CMakeLists.txt index 4e377c5..3d17f06 100644 --- a/net_server/CMakeLists.txt +++ b/net_server/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.8) project (net_server) set(CMAKE_CXX_STANDARD 11) -include_directories(../net_com) +include_directories() include_directories(../util) add_executable(net_server main.cpp diff --git a/net_server/net_server.cpp b/net_server/net_server.cpp index c5a18cc..0ad6b30 100644 --- a/net_server/net_server.cpp +++ b/net_server/net_server.cpp @@ -2,7 +2,7 @@ CNetServer::CNetServer() { - log_ = CNetPub::getInstance(); + log_ = CLogger::getLogger(); } void CNetServer::run() diff --git a/net_server/net_server.h b/net_server/net_server.h index 0ad0396..5efb800 100644 --- a/net_server/net_server.h +++ b/net_server/net_server.h @@ -1,8 +1,8 @@ #ifndef NET_SERVER_HEADER #define NET_SERVER_HEADER -#include "net_com.h" -#include "net_pub.h" +#include "net_com/net_com.h" +#include "util/net_pub.h" class CNetServer { @@ -14,7 +14,7 @@ public: private: CCommunicate communi_{}; - NetLog log_{}; + Log_t log_{}; }; #endif diff --git a/util/net_pub.cpp b/util/net_pub.cpp index 47334d1..ca9a088 100644 --- a/util/net_pub.cpp +++ b/util/net_pub.cpp @@ -1,4 +1,41 @@ #include "net_pub.h" -NetLog CNetPub::log_ = nullptr; -std::shared_ptr CNetPub::mutex_ = std::make_shared(); +std::shared_ptr CLogger::logger_ = nullptr; +Log_t CLogger::log_ = nullptr; + +std::mutex CLogger::mutex_; + +Log_t CLogger::getLogger() +{ + if (logger_ == nullptr) { + mutex_.lock(); + if (logger_ == nullptr) { + logger_ = std::make_shared(); + logger_->init(); + } + mutex_.unlock(); + } + return logger_->log_; +} + +void CLogger::init() +{ + // 创建控制台接收器 + auto console_sink = std::make_shared(); + console_sink->set_level(spdlog::level::debug); + console_sink->set_pattern("[console] [%^%l%$] %v"); + + // 创建文件接收器 + auto file_sink = std::make_shared( + "logs/nettrans.log", 1024 * 100, 5); + file_sink->set_level(spdlog::level::debug); + file_sink->set_pattern("[file] [%^%l%$] %v"); + + // 创建多接收器日志器 + std::vector sinks{console_sink, file_sink}; + log_ = std::make_shared("multi_sink", sinks.begin(), + sinks.end()); + spdlog::register_logger(log_); + log_->set_level(spdlog::level::debug); + log_->set_pattern("[%H:%M:%S %z] [%n] [%^%l%$] %v"); +} diff --git a/util/net_pub.h b/util/net_pub.h index 34f1933..e2480a1 100644 --- a/util/net_pub.h +++ b/util/net_pub.h @@ -2,35 +2,34 @@ #define NET_PUB_HPP #include +#include #include #include #include -typedef std::shared_ptr NetLog; -class CNetPub +class noncopyable +{ +protected: + noncopyable() = default; + noncopyable(const noncopyable&) = delete; + noncopyable& operator=(const noncopyable&) = delete; +}; + +typedef std::shared_ptr Log_t; +class CLogger : public noncopyable { 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_; - } + static Log_t getLogger(); private: - static NetLog log_; - static std::shared_ptr mutex_; + void init(); + using CPtrLogger = std::shared_ptr; + +private: + static CPtrLogger logger_; + static std::mutex mutex_; + static Log_t log_; }; #endif