lite wip
This commit is contained in:
		
							parent
							
								
									043c4acc7e
								
							
						
					
					
						commit
						57a312cb1a
					
				| @ -54,6 +54,8 @@ option(SPDLOG_BUILD_BENCH "Build benchmarks (Requires https://github.com/google/ | ||||
| option(SPDLOG_BUILD_TESTS "Build tests" ${SPDLOG_MASTER_PROJECT}) | ||||
| option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF) | ||||
| option(SPDLOG_INSTALL "Generate the install target." ${SPDLOG_MASTER_PROJECT}) | ||||
| option(SPDLOG_BUILD_LITE "Build spdlog lite" ${SPDLOG_MASTER_PROJECT}) | ||||
| 
 | ||||
| 
 | ||||
| if(SPDLOG_FMT_EXTERNAL AND NOT TARGET fmt::fmt) | ||||
|     find_package(fmt REQUIRED CONFIG) | ||||
| @ -86,6 +88,11 @@ if(SPDLOG_BUILD_BENCH) | ||||
|     add_subdirectory(bench) | ||||
| endif() | ||||
| 
 | ||||
| if(SPDLOG_BUILD_LITE) | ||||
|     add_subdirectory(lite) | ||||
|     add_subdirectory(lite-example) | ||||
| endif() | ||||
| 
 | ||||
| #--------------------------------------------------------------------------------------- | ||||
| # Install/export targets and files | ||||
| #--------------------------------------------------------------------------------------- | ||||
|  | ||||
							
								
								
									
										13
									
								
								lite-example/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lite-example/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| project(spdlog-lite-example CXX) | ||||
| 
 | ||||
| find_package(Threads REQUIRED) | ||||
| 
 | ||||
| set(LITE_SOURCES example.cpp create_lite.cpp) | ||||
| 
 | ||||
| add_executable(${PROJECT_NAME} ${LITE_SOURCES}) | ||||
| 
 | ||||
| include_directories(../lite) | ||||
| target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads) | ||||
| target_link_libraries(${PROJECT_NAME} PRIVATE spdlog_lite) | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										15
									
								
								lite-example/create_lite.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lite-example/create_lite.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| #include "logger.h" | ||||
| #include "spdlog/spdlog.h" | ||||
| 
 | ||||
| 
 | ||||
| spdlog::lite::logger spdlog::create_lite(void* ctx) | ||||
| { | ||||
|     if(ctx) { | ||||
|         //..
 | ||||
|     } | ||||
|     auto logger_impl = spdlog::default_logger(); | ||||
|     logger_impl->set_level(spdlog::level::trace); | ||||
|     return spdlog::lite::logger(logger_impl); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										7
									
								
								lite-example/example.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								lite-example/example.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| #include "logger.h" | ||||
| 
 | ||||
| int main() | ||||
| { | ||||
|     auto l = spdlog::create_lite(); | ||||
|     l.trace("HELLO {}!!!", "lite"); | ||||
| } | ||||
							
								
								
									
										6
									
								
								lite/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								lite/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| cmake_minimum_required(VERSION 3.1) | ||||
| project(spdlog_lite) | ||||
| 
 | ||||
| add_library(spdlog_lite logger.cpp) | ||||
| 
 | ||||
| target_link_libraries(spdlog_lite spdlog::spdlog) | ||||
							
								
								
									
										21
									
								
								lite/logger.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								lite/logger.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #include "logger.h" | ||||
| #include "spdlog/spdlog.h" | ||||
| #include "spdlog/logger.h" | ||||
| 
 | ||||
| spdlog::lite::logger::logger(std::shared_ptr<spdlog::logger> impl) | ||||
| { | ||||
|     impl_ = std::move(impl); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool spdlog::lite::logger::should_log(spdlog::lite::level lvl) const SPDLOG_NOEXCEPT | ||||
| { | ||||
|     auto spd_level = static_cast<spdlog::level::level_enum >(lvl); | ||||
|     return impl_->should_log(spd_level);//TODO level
 | ||||
| } | ||||
| 
 | ||||
| void spdlog::lite::logger::log_formatted_(spdlog::lite::level lvl, const fmt::memory_buffer &formatted) | ||||
| { | ||||
|     auto spd_level = static_cast<spdlog::level::level_enum >(lvl); | ||||
|     impl_->log(spd_level, spdlog::details::fmt_helper::to_string_view(formatted)); //TODO and source_loc
 | ||||
| } | ||||
							
								
								
									
										64
									
								
								lite/logger.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								lite/logger.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | ||||
| //
 | ||||
| // Created by gabi on 3/16/19.
 | ||||
| //
 | ||||
| 
 | ||||
| #ifndef SPDLOG_LIB_LOGGER_H | ||||
| #define SPDLOG_LIB_LOGGER_H | ||||
| 
 | ||||
| #include <memory> | ||||
| #include "spd_types.h" | ||||
| #include "spdlog/fmt/fmt.h" | ||||
| 
 | ||||
| 
 | ||||
| namespace spdlog { | ||||
|     class logger; | ||||
| 
 | ||||
|     namespace lite { | ||||
|         class logger { | ||||
|         public: | ||||
|             logger() = default; | ||||
| 
 | ||||
|             logger(std::shared_ptr<spdlog::logger> impl); | ||||
|             logger(const logger&) = default; | ||||
|             logger(logger&&) = default; | ||||
|             logger& operator=(const logger&) = default; | ||||
| 
 | ||||
|             ~logger() = default; | ||||
| 
 | ||||
|             bool should_log(spdlog::lite::level lvl) const noexcept; | ||||
| 
 | ||||
|             template<typename... Args> | ||||
|             void log(spdlog::lite::level lvl, const char *fmt, const Args &... args) { | ||||
|                 if (!should_log(lvl)) { | ||||
|                     return; | ||||
|                 } | ||||
|                 fmt::memory_buffer formatted_buf; | ||||
|                 fmt::format_to(formatted_buf, fmt, args...); | ||||
|                 log_formatted_(lvl, formatted_buf); | ||||
|             } | ||||
| 
 | ||||
| //        template<typename... Args>
 | ||||
| //        void log(spdlog::lite::level lvl, const char *fmt, const Args &... args)
 | ||||
| //        {
 | ||||
| //            log(lvl, fmt, args...);
 | ||||
| //        }
 | ||||
| 
 | ||||
|             template<typename... Args> | ||||
|             void trace(const char *fmt, const Args &... args) { | ||||
|                 log(spdlog::lite::level::trace, fmt, args...); | ||||
|             } | ||||
| 
 | ||||
|         protected: | ||||
|             std::shared_ptr<spdlog::logger> impl_; | ||||
| 
 | ||||
|             void log_formatted_(spdlog::lite::level lvl, const fmt::memory_buffer &formatted); | ||||
| 
 | ||||
|         }; | ||||
| 
 | ||||
|     } // namespace lite
 | ||||
| 
 | ||||
|     // factory to create lite logger
 | ||||
|     // implement it in a dedicated compilation unit for fast compiles
 | ||||
|     spdlog::lite::logger create_lite(void* ctx = nullptr); | ||||
| } // namespace spdlog
 | ||||
| #endif //SPDLOG_LIB_LOGGER_H
 | ||||
							
								
								
									
										24
									
								
								lite/spd_types.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lite/spd_types.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| //
 | ||||
| // Copyright(c) 2019 Gabi Melman.
 | ||||
| // Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | ||||
| //
 | ||||
| 
 | ||||
| // core types, forward declarations and defines used by spdlog
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| namespace spdlog | ||||
| { | ||||
| namespace lite | ||||
| { | ||||
|     enum class level{ | ||||
|         trace, | ||||
|         debug, | ||||
|         info, | ||||
|         warning, | ||||
|         error, | ||||
|         critical, | ||||
|         off | ||||
| 
 | ||||
|     }; | ||||
| }} | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user