From 9564eb2edb81ad099b617e66699dbe11a5e1efd3 Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 11 May 2019 13:19:53 +0300 Subject: [PATCH] Moved cpp files to inl.h --- example/example.cpp | 227 +----------------- .../async_logger.cpp => async_logger-inl.h} | 4 - include/spdlog/async_logger.h | 2 +- .../file_helper-inl.h} | 4 - include/spdlog/details/file_helper.h | 2 +- .../log_msg.cpp => details/log_msg-inl.h} | 4 - include/spdlog/details/log_msg.h | 2 +- .../spdlog/{impl/os.cpp => details/os-inl.h} | 3 - include/spdlog/details/os.h | 2 +- .../pattern_formatter-inl.h} | 4 - include/spdlog/details/pattern_formatter.h | 2 +- .../periodic_worker-inl.h} | 4 - include/spdlog/details/periodic_worker.h | 2 +- .../registry.cpp => details/registry-inl.h} | 3 - include/spdlog/details/registry.h | 2 +- .../thread_pool-inl.h} | 7 - include/spdlog/details/thread_pool.h | 2 +- .../spdlog/{impl/logger.cpp => logger-inl.h} | 4 - include/spdlog/logger.h | 2 +- .../ansicolor_sink-inl.h} | 12 - include/spdlog/sinks/ansicolor_sink.h | 2 +- .../base_sink.cpp => sinks/base_sink-inl.h} | 9 - include/spdlog/sinks/base_sink.h | 2 +- .../{impl/sink.cpp => sinks/sink-inl.h} | 4 - include/spdlog/sinks/sink.h | 2 +- .../impl/fmt-format.cpp => src/format.cc | 0 26 files changed, 16 insertions(+), 297 deletions(-) rename include/spdlog/{impl/async_logger.cpp => async_logger-inl.h} (97%) rename include/spdlog/{impl/file_helper.cpp => details/file_helper-inl.h} (97%) rename include/spdlog/{impl/log_msg.cpp => details/log_msg-inl.h} (90%) rename include/spdlog/{impl/os.cpp => details/os-inl.h} (99%) rename include/spdlog/{impl/pattern_formatter.cpp => details/pattern_formatter-inl.h} (99%) rename include/spdlog/{impl/periodic_worker.cpp => details/periodic_worker-inl.h} (92%) rename include/spdlog/{impl/registry.cpp => details/registry-inl.h} (99%) rename include/spdlog/{impl/thread_pool.cpp => details/thread_pool-inl.h} (93%) rename include/spdlog/{impl/logger.cpp => logger-inl.h} (98%) rename include/spdlog/{impl/ansicolor_sink.cpp => sinks/ansicolor_sink-inl.h} (84%) rename include/spdlog/{impl/base_sink.cpp => sinks/base_sink-inl.h} (82%) rename include/spdlog/{impl/sink.cpp => sinks/sink-inl.h} (92%) rename include/spdlog/impl/fmt-format.cpp => src/format.cc (100%) diff --git a/example/example.cpp b/example/example.cpp index 345f8bd1..dc3ebc75 100644 --- a/example/example.cpp +++ b/example/example.cpp @@ -7,229 +7,10 @@ // // -#include - -void stdout_logger_example(); -void basic_example(); -void rotating_example(); -void daily_example(); -void async_example(); -void binary_example(); -void trace_example(); -void multi_sink_example(); -void user_defined_example(); -void err_handler_example(); -void syslog_example(); -void clone_example(); #include "spdlog/spdlog.h" -int main(int, char *[]) -{ - spdlog::info("Welcome to spdlog version {}.{}.{} !", SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH); - spdlog::warn("Easy padding in numbers like {:08d}", 12); - spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); - spdlog::info("Support for floats {:03.2f}", 1.23456); - spdlog::info("Positional args are {1} {0}..", "too", "supported"); - spdlog::info("{:>8} aligned, {:<8} aligned", "right", "left"); - - // Runtime log levels - spdlog::set_level(spdlog::level::info); // Set global log level to info - spdlog::debug("This message should not be displayed!"); - spdlog::set_level(spdlog::level::trace); // Set specific logger's log level - spdlog::debug("This message should be displayed.."); - - // Customize msg format for all loggers - spdlog::set_pattern("[%H:%M:%S %z] [%^%L%$] [thread %t] %v"); - spdlog::info("This an info message with custom format"); - spdlog::set_pattern("%+"); // back to default format - - try - { - stdout_logger_example(); - basic_example(); - rotating_example(); - daily_example(); - clone_example(); - async_example(); - binary_example(); - multi_sink_example(); - user_defined_example(); - err_handler_example(); - trace_example(); - - // Flush all *registered* loggers using a worker thread every 3 seconds. - // note: registered loggers *must* be thread safe for this to work correctly! - spdlog::flush_every(std::chrono::seconds(3)); - - // Apply some function on all registered loggers - spdlog::apply_all([&](std::shared_ptr l) { l->info("End of example."); }); - - // Release all spdlog resources, and drop all loggers in the registry. - // This is optional (only mandatory if using windows + async log). - spdlog::shutdown(); - } - - // Exceptions will only be thrown upon failed logger or sink construction (not during logging). - catch (const spdlog::spdlog_ex &ex) - { - std::printf("Log initialization failed: %s\n", ex.what()); - return 1; - } -} - -#include "spdlog/sinks/stdout_color_sinks.h" -// or #include "spdlog/sinks/stdout_sinks.h" if no colors needed. -void stdout_logger_example() -{ - // Create color multi threaded logger. - auto console = spdlog::stdout_color_mt("console"); - // or for stderr: - // auto console = spdlog::stderr_color_mt("error-logger"); -} - -#include "spdlog/sinks/basic_file_sink.h" -void basic_example() -{ - // Create basic file logger (not rotated). - auto my_logger = spdlog::basic_logger_mt("file_logger", "logs/basic-log.txt"); -} - -#include "spdlog/sinks/rotating_file_sink.h" -void rotating_example() -{ - // Create a file rotating logger with 5mb size max and 3 rotated files. - auto rotating_logger = spdlog::rotating_logger_mt("some_logger_name", "logs/rotating.txt", 1048576 * 5, 3); -} - -#include "spdlog/sinks/daily_file_sink.h" -void daily_example() -{ - // Create a daily logger - a new file is created every day on 2:30am. - auto daily_logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30); -} - -// Clone a logger and give it new name. -// Useful for creating component/subsystem loggers from some "root" logger. -void clone_example() -{ - auto network_logger = spdlog::default_logger()->clone("network"); - network_logger->info("Logging network stuff.."); -} - -#include "spdlog/async.h" -void async_example() -{ - // Default thread pool settings can be modified *before* creating the async logger: - // spdlog::init_thread_pool(32768, 1); // queue with max 32k items 1 backing thread. - auto async_file = spdlog::basic_logger_mt("async_file_logger", "logs/async_log.txt"); - // alternatively: - // auto async_file = spdlog::create_async("async_file_logger", "logs/async_log.txt"); - - for (int i = 1; i < 101; ++i) - { - async_file->info("Async message #{}", i); - } -} - -// Log binary data as hex. -// Many types of std::container types can be used. -// Iterator ranges are supported too. -// Format flags: -// {:X} - print in uppercase. -// {:s} - don't separate each byte with space. -// {:p} - don't print the position on each line start. -// {:n} - don't split the output to lines. - -#include "spdlog/fmt/bin_to_hex.h" -void binary_example() -{ - std::vector buf; - for (int i = 0; i < 80; i++) - { - buf.push_back(static_cast(i & 0xff)); - } - spdlog::info("Binary example: {}", spdlog::to_hex(buf)); - spdlog::info("Another binary example:{:n}", spdlog::to_hex(std::begin(buf), std::begin(buf) + 10)); - // more examples: - // logger->info("uppercase: {:X}", spdlog::to_hex(buf)); - // logger->info("uppercase, no delimiters: {:Xs}", spdlog::to_hex(buf)); - // logger->info("uppercase, no delimiters, no position info: {:Xsp}", spdlog::to_hex(buf)); -} - -// Compile time log levels. -// define SPDLOG_ACTIVE_LEVEL to required level (e.g. SPDLOG_LEVEL_TRACE) -void trace_example() -{ - // trace from default logger - SPDLOG_TRACE("Some trace message.. {} ,{}", 1, 3.23); - // debug from default logger - SPDLOG_DEBUG("Some debug message.. {} ,{}", 1, 3.23); - - // trace from logger object - auto logger = spdlog::get("file_logger"); - SPDLOG_LOGGER_TRACE(logger, "another trace message"); -} - -// A logger with multiple sinks (stdout and file) - each with a different format and log level. -void multi_sink_example() -{ - auto console_sink = std::make_shared(); - console_sink->set_level(spdlog::level::warn); - console_sink->set_pattern("[multi_sink_example] [%^%l%$] %v"); - - auto file_sink = std::make_shared("logs/multisink.txt", true); - file_sink->set_level(spdlog::level::trace); - - spdlog::logger logger("multi_sink", {console_sink, file_sink}); - logger.set_level(spdlog::level::debug); - logger.warn("this should appear in both console and file"); - logger.info("this message should not appear in the console, only in the file"); -} - -// User defined types logging by implementing operator<< -#include "spdlog/fmt/ostr.h" // must be included -struct my_type -{ - int i; - template - friend OStream &operator<<(OStream &os, const my_type &c) - { - return os << "[my_type i=" << c.i << "]"; - } -}; - -void user_defined_example() -{ - spdlog::info("user defined type: {}", my_type{14}); -} - -// Custom error handler. Will be triggered on log failure. -void err_handler_example() -{ - // can be set globally or per logger(logger->set_error_handler(..)) - spdlog::set_error_handler([](const std::string &msg) { printf("*** Custom log error handler: %s ***\n", msg.c_str()); }); -} - -// syslog example (linux/osx/freebsd) -#ifndef _WIN32 -#include "spdlog/sinks/syslog_sink.h" -void syslog_example() -{ - std::string ident = "spdlog-example"; - auto syslog_logger = spdlog::syslog_logger_mt("syslog", ident, LOG_PID); - syslog_logger->warn("This is warning that will end up in syslog."); -} -#endif - -// Android example. -#if defined(__ANDROID__) -#include "spdlog/sinks/android_sink.h" -void android_example() -{ - std::string tag = "spdlog-android"; - auto android_logger = spdlog::android_logger_mt("android", tag); - android_logger->critical("Use \"adb shell logcat\" to view this message."); -} - -#endif +int main(int, char *[]) { + int i = 123; + spdlog::info("HELLO STATIC! {}", i); +} \ No newline at end of file diff --git a/include/spdlog/impl/async_logger.cpp b/include/spdlog/async_logger-inl.h similarity index 97% rename from include/spdlog/impl/async_logger.cpp rename to include/spdlog/async_logger-inl.h index eeae49f9..57ecfd73 100644 --- a/include/spdlog/impl/async_logger.cpp +++ b/include/spdlog/async_logger-inl.h @@ -1,7 +1,3 @@ -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/async_logger.h" -#endif - // async logger implementation // uses a thread pool to perform the actual logging diff --git a/include/spdlog/async_logger.h b/include/spdlog/async_logger.h index 0178b39d..6056ee07 100644 --- a/include/spdlog/async_logger.h +++ b/include/spdlog/async_logger.h @@ -66,5 +66,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/async_logger.cpp" +#include "async_logger-inl.h" #endif diff --git a/include/spdlog/impl/file_helper.cpp b/include/spdlog/details/file_helper-inl.h similarity index 97% rename from include/spdlog/impl/file_helper.cpp rename to include/spdlog/details/file_helper-inl.h index eb8b9193..d40763ec 100644 --- a/include/spdlog/impl/file_helper.cpp +++ b/include/spdlog/details/file_helper-inl.h @@ -3,10 +3,6 @@ // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/file_helper.h" - -#endif #include "spdlog/details/os.h" #include diff --git a/include/spdlog/details/file_helper.h b/include/spdlog/details/file_helper.h index 6f9d7020..6530b18b 100644 --- a/include/spdlog/details/file_helper.h +++ b/include/spdlog/details/file_helper.h @@ -58,5 +58,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/file_helper.cpp" +#include "file_helper-inl.h" #endif diff --git a/include/spdlog/impl/log_msg.cpp b/include/spdlog/details/log_msg-inl.h similarity index 90% rename from include/spdlog/impl/log_msg.cpp rename to include/spdlog/details/log_msg-inl.h index e854a1ba..653b596e 100644 --- a/include/spdlog/impl/log_msg.cpp +++ b/include/spdlog/details/log_msg-inl.h @@ -1,10 +1,6 @@ #include "spdlog/details/os.h" #include "spdlog/sinks/sink.h" -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/log_msg.h" -#endif - SPDLOG_INLINE spdlog::details::log_msg::log_msg( spdlog::source_loc loc, const std::string *loggers_name, spdlog::level::level_enum lvl, spdlog::string_view_t view) : logger_name(loggers_name) diff --git a/include/spdlog/details/log_msg.h b/include/spdlog/details/log_msg.h index fea55a40..8774dea6 100644 --- a/include/spdlog/details/log_msg.h +++ b/include/spdlog/details/log_msg.h @@ -34,5 +34,5 @@ struct log_msg } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/log_msg.cpp" +#include "log_msg-inl.h" #endif diff --git a/include/spdlog/impl/os.cpp b/include/spdlog/details/os-inl.h similarity index 99% rename from include/spdlog/impl/os.cpp rename to include/spdlog/details/os-inl.h index ed174cf1..0b33a17e 100644 --- a/include/spdlog/impl/os.cpp +++ b/include/spdlog/details/os-inl.h @@ -2,9 +2,6 @@ // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/os.h" -#endif #include #include diff --git a/include/spdlog/details/os.h b/include/spdlog/details/os.h index 8858ae68..2d04640a 100644 --- a/include/spdlog/details/os.h +++ b/include/spdlog/details/os.h @@ -90,5 +90,5 @@ void wbuf_to_utf8buf(const fmt::wmemory_buffer &wbuf, fmt::memory_buffer &target } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/os.cpp" +#include "os-inl.h" #endif diff --git a/include/spdlog/impl/pattern_formatter.cpp b/include/spdlog/details/pattern_formatter-inl.h similarity index 99% rename from include/spdlog/impl/pattern_formatter.cpp rename to include/spdlog/details/pattern_formatter-inl.h index abcc7b36..662c6bc3 100644 --- a/include/spdlog/impl/pattern_formatter.cpp +++ b/include/spdlog/details/pattern_formatter-inl.h @@ -3,10 +3,6 @@ // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/pattern_formatter.h" -#endif - #include "spdlog/details/fmt_helper.h" #include "spdlog/details/log_msg.h" #include "spdlog/details/os.h" diff --git a/include/spdlog/details/pattern_formatter.h b/include/spdlog/details/pattern_formatter.h index 8866b8bd..f25e6b72 100644 --- a/include/spdlog/details/pattern_formatter.h +++ b/include/spdlog/details/pattern_formatter.h @@ -98,5 +98,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/pattern_formatter.cpp" +#include "pattern_formatter-inl.h" #endif diff --git a/include/spdlog/impl/periodic_worker.cpp b/include/spdlog/details/periodic_worker-inl.h similarity index 92% rename from include/spdlog/impl/periodic_worker.cpp rename to include/spdlog/details/periodic_worker-inl.h index 33f82ae9..9e9a81d7 100644 --- a/include/spdlog/impl/periodic_worker.cpp +++ b/include/spdlog/details/periodic_worker-inl.h @@ -2,10 +2,6 @@ // Created by gabi on 5/8/19. // -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/periodic_worker.h" -#endif - #include "spdlog/common.h" SPDLOG_INLINE spdlog::details::periodic_worker::periodic_worker(const std::function &callback_fun, std::chrono::seconds interval) diff --git a/include/spdlog/details/periodic_worker.h b/include/spdlog/details/periodic_worker.h index 03e611aa..a28a237f 100644 --- a/include/spdlog/details/periodic_worker.h +++ b/include/spdlog/details/periodic_worker.h @@ -39,5 +39,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/periodic_worker.cpp" +#include "periodic_worker-inl.h" #endif diff --git a/include/spdlog/impl/registry.cpp b/include/spdlog/details/registry-inl.h similarity index 99% rename from include/spdlog/impl/registry.cpp rename to include/spdlog/details/registry-inl.h index 9a80aeea..4727414e 100644 --- a/include/spdlog/impl/registry.cpp +++ b/include/spdlog/details/registry-inl.h @@ -2,9 +2,6 @@ // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/details/registry.h" -#endif #include "spdlog/common.h" #include "spdlog/details/periodic_worker.h" diff --git a/include/spdlog/details/registry.h b/include/spdlog/details/registry.h index d6f4dbea..47464726 100644 --- a/include/spdlog/details/registry.h +++ b/include/spdlog/details/registry.h @@ -102,5 +102,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/registry.cpp" +#include "registry-inl.h" #endif diff --git a/include/spdlog/impl/thread_pool.cpp b/include/spdlog/details/thread_pool-inl.h similarity index 93% rename from include/spdlog/impl/thread_pool.cpp rename to include/spdlog/details/thread_pool-inl.h index fa8f961d..30c849de 100644 --- a/include/spdlog/impl/thread_pool.cpp +++ b/include/spdlog/details/thread_pool-inl.h @@ -1,10 +1,3 @@ -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/async_logger.h" -#include "spdlog/details/thread_pool.h" - -template class spdlog::details::mpmc_blocking_queue; - -#endif #include "spdlog/common.h" diff --git a/include/spdlog/details/thread_pool.h b/include/spdlog/details/thread_pool.h index a872c303..21bef56f 100644 --- a/include/spdlog/details/thread_pool.h +++ b/include/spdlog/details/thread_pool.h @@ -152,5 +152,5 @@ private: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/thread_pool.cpp" +#include "thread_pool-inl.h" #endif \ No newline at end of file diff --git a/include/spdlog/impl/logger.cpp b/include/spdlog/logger-inl.h similarity index 98% rename from include/spdlog/impl/logger.cpp rename to include/spdlog/logger-inl.h index 01316b64..5e817d4b 100644 --- a/include/spdlog/impl/logger.cpp +++ b/include/spdlog/logger-inl.h @@ -1,7 +1,3 @@ -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/logger.h" -#endif - #include "spdlog/sinks/sink.h" #include "spdlog/details/pattern_formatter.h" diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index 804abf33..17a70150 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -341,5 +341,5 @@ protected: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/logger.cpp" +#include "logger-inl.h #endif diff --git a/include/spdlog/impl/ansicolor_sink.cpp b/include/spdlog/sinks/ansicolor_sink-inl.h similarity index 84% rename from include/spdlog/impl/ansicolor_sink.cpp rename to include/spdlog/sinks/ansicolor_sink-inl.h index 97bbfd8e..fa40570d 100644 --- a/include/spdlog/impl/ansicolor_sink.cpp +++ b/include/spdlog/sinks/ansicolor_sink-inl.h @@ -1,7 +1,3 @@ -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/sinks/ansicolor_sink.h" -#endif - #include "spdlog/details/os.h" template @@ -95,11 +91,3 @@ SPDLOG_INLINE void spdlog::sinks::ansicolor_sink::pr { fwrite(formatted.data() + start, sizeof(char), end - start, target_file_); } - -// template instantiate stdout_mt, stdout_st -template class spdlog::sinks::ansicolor_sink; -template class spdlog::sinks::ansicolor_sink; - -// template instantiate stderr_mt, stderr_st -template class spdlog::sinks::ansicolor_sink; -template class spdlog::sinks::ansicolor_sink; diff --git a/include/spdlog/sinks/ansicolor_sink.h b/include/spdlog/sinks/ansicolor_sink.h index 44d5a287..3adce3eb 100644 --- a/include/spdlog/sinks/ansicolor_sink.h +++ b/include/spdlog/sinks/ansicolor_sink.h @@ -92,5 +92,5 @@ using ansicolor_stderr_sink_st = ansicolor_sink -template class spdlog::sinks::base_sink; -template class spdlog::sinks::base_sink; -#endif - #include "spdlog/common.h" #include "spdlog/details/pattern_formatter.h" diff --git a/include/spdlog/sinks/base_sink.h b/include/spdlog/sinks/base_sink.h index 000a6e20..e3a3924a 100644 --- a/include/spdlog/sinks/base_sink.h +++ b/include/spdlog/sinks/base_sink.h @@ -40,5 +40,5 @@ protected: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/base_sink.cpp" +#include "base_sink-inl.h" #endif \ No newline at end of file diff --git a/include/spdlog/impl/sink.cpp b/include/spdlog/sinks/sink-inl.h similarity index 92% rename from include/spdlog/impl/sink.cpp rename to include/spdlog/sinks/sink-inl.h index 938fc73c..559018b6 100644 --- a/include/spdlog/impl/sink.cpp +++ b/include/spdlog/sinks/sink-inl.h @@ -1,10 +1,6 @@ #include "spdlog/common.h" #include "spdlog/details/pattern_formatter.h" -#ifdef SPDLOG_STATIC_LIB -#include "spdlog/sinks/sink.h" -#endif - SPDLOG_INLINE spdlog::sinks::sink::sink() : formatter_{details::make_unique()} { diff --git a/include/spdlog/sinks/sink.h b/include/spdlog/sinks/sink.h index 1fc1f1d7..01273d18 100644 --- a/include/spdlog/sinks/sink.h +++ b/include/spdlog/sinks/sink.h @@ -42,5 +42,5 @@ protected: } // namespace spdlog #ifndef SPDLOG_STATIC_LIB -#include "spdlog/impl/sink.cpp" +#include "sink-inl.h" #endif diff --git a/include/spdlog/impl/fmt-format.cpp b/src/format.cc similarity index 100% rename from include/spdlog/impl/fmt-format.cpp rename to src/format.cc