File tree 3 files changed +59
-1
lines changed
code/ModernCpp-ConcurrentProgramming-Tutorial
3 files changed +59
-1
lines changed Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "C
12
12
add_compile_options ("-finput-charset=UTF-8" "-fexec-charset=UTF-8" "-fopenmp" )
13
13
endif ()
14
14
15
- add_executable (${PROJECT_NAME} "45原子特化shared_ptr .cpp" )
15
+ add_executable (${PROJECT_NAME} "test2 .cpp" )
16
16
17
17
set (SFML_DIR "D:/lib/SFML-2.6.1-windows-vc17-64-bit/SFML-2.6.1/lib/cmake/SFML" )
18
18
find_package (SFML 2.6.1 COMPONENTS system window graphics audio network REQUIRED)
@@ -30,3 +30,19 @@ set(Boost_INCLUDE_DIR "D:/vcpkg-master/installed/x64-windows/include")
30
30
include_directories (${Boost_INCLUDE_DIR} )
31
31
find_package (Boost REQUIRED COMPONENTS system )
32
32
target_link_libraries (${PROJECT_NAME} PRIVATE Boost::system )
33
+
34
+ target_include_directories (${PROJECT_NAME} PRIVATE "D:/project/cpp-terminal/include" )
35
+ if (CMAKE_BUILD_TYPE STREQUAL "Release" )
36
+ target_link_libraries (${PROJECT_NAME} PRIVATE
37
+ "D:/project/cpp-terminal/lib/cpp-terminal-private.lib"
38
+ "D:/project/cpp-terminal/lib/cpp-terminal.lib"
39
+ )
40
+ else ()
41
+ target_link_libraries (${PROJECT_NAME} PRIVATE
42
+ "D:/project/cpp-terminal/lib/private/debug/cpp-terminal-private.lib"
43
+ "D:/project/cpp-terminal/lib/debug/cpp-terminal.lib"
44
+ )
45
+ endif ()
46
+
47
+ find_package (spdlog REQUIRED)
48
+ target_link_libraries (${PROJECT_NAME} PRIVATE spdlog::spdlog_header_only)
Original file line number Diff line number Diff line change
1
+ #pragma once
2
+
3
+ #include < spdlog/spdlog.h>
4
+ #include < spdlog/sinks/stdout_color_sinks.h>
5
+ #include < spdlog/sinks/basic_file_sink.h>
6
+
7
+ inline void setupLogging () {
8
+ auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(" logs.txt" );
9
+ file_sink->set_level (spdlog::level::debug);
10
+ file_sink->set_pattern (" [%Y-%m-%d %H:%M:%S] [%@] [%!] [thread %t] [%oms] [%l] %v" );
11
+
12
+ auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
13
+ console_sink->set_level (spdlog::level::debug);
14
+ console_sink->set_pattern (" %^[%Y-%m-%d %H:%M:%S] [thread %t] [%oms] [%l] %v%$" );
15
+
16
+ auto logger = std::make_shared<spdlog::logger>(" multi_sink" , spdlog::sinks_init_list{ file_sink, console_sink });
17
+ spdlog::register_logger (logger);
18
+
19
+ spdlog::set_default_logger (logger);
20
+ }
21
+
22
+ // spdlog 要想输出文件、路径、函数、行号,只能借助此宏,才会显示。
23
+ // 其实使用 C++20 std::source_location 也能获取这些信息,后面再考虑单独封装吧,目前这样做导致没办法做格式字符串。
24
+
25
+ #define LOG_INFO (msg, ...) SPDLOG_LOGGER_INFO(spdlog::get(" multi_sink" ), msg)
26
+ #define LOG_WARN (msg, ...) SPDLOG_LOGGER_WARN(spdlog::get(" multi_sink" ), msg)
27
+ #define LOG_ERROR (msg, ...) SPDLOG_LOGGER_ERROR(spdlog::get(" multi_sink" ), msg)
28
+
29
+ const auto init_log = (setupLogging(), 0 );
Original file line number Diff line number Diff line change
1
+ #include " Log.h"
2
+ #include < thread>
3
+ #include < format>
4
+ using namespace std ::chrono_literals;
5
+
6
+ int main () {
7
+ LOG_WARN (" 😅" );
8
+ std::jthread t{[]{
9
+ std::this_thread::sleep_for (100ms);
10
+ LOG_ERROR (" 🤣" );
11
+ }};
12
+ LOG_INFO (" 👉" );
13
+ }
You can’t perform that action at this time.
0 commit comments