spdlog v1.3.0 Release Notes

Release Date: 2019-01-11 // over 5 years ago
  • ๐Ÿ‘Œ Improvements

    Upgraded to the latest and greatest fmt library version 5.3.0.

    0๏ธโƒฃ New API for default logger spdlog::trace(..), spdlog::debug(..), spdlog::info(..), etc.
    0๏ธโƒฃ For convenience, spdlog now creates a default global logger (to stdout, colored and multithreaded).
    It can be used easily by calling spdlog::info(..), spdlog::debug(..), etc directly without any preparations.

    It's instance can be replaced to any other logger (shared_ptr):

    spdlog::set\_default\_logger(some\_other\_logger);spdlog::info("Use the new default logger");
    

    Alignment support in log patterns.
    Each pattern flag can be aligned by prepending a width number(upto 128).
    ๐Ÿ‘‰ Use-(left align) or = (center align) to control the align side:

    align meaning example result
    %<width><flag> Align to the right %8l "    info"
    %-<width><flag> Align to the left %-8l "info    "
    %=<width><flag> Align to the center %=8l "  info  "

    Support for logging source filename , line number , and function name (thanks @possiblyhuman for contributing to this effort)

    flag meaning example
    %@ Source file and line (use SPDLOG_TRACE(..),SPDLOG_INFO(...) etc.) my_file.cpp:123
    %s Source file (use SPDLOG_TRACE(..),SPDLOG_INFO(...) etc.) my_file.cpp
    %# Source line (use SPDLOG_TRACE(..),SPDLOG_INFO(...) etc.) 123
    %! Source function (use SPDLOG_TRACE(..),SPDLOG_INFO(...) etc. see tweakme for pretty-print) my_func

    Support for compile time check of log levels using #define SPDLOG_ACTIVE_LEVEL <level>.
    ๐ŸŒฒ Use LOG_TRACE(..), LOG_DEBUG(..), LOG_INFO(..), etc. to enable.
    ๐ŸŒฒ Those macros check at compile time the log level and translate to empty statement if the log level is not high enough. Even if a log macro evaluate to a log call, the macro will check at runtime the level before evaluating its arguments.
    So for example the following won't evaluate some_costly_function() because the logger's level is error:

    #define SPDLOG\_ACTIVE\_LEVEL SPDLOG\_LEVEL\_DEBUG #include "spdlog/spdlog.h" .. spdlog::set\_level(error); SPDLOG\_DEBUG("Some costly arg: {}", some\_costly\_function());
    

    CMake improvements. Thanks @dpacbach (85b4d7c, f5dc166 ).

    ๐ŸŽ Numerous small performance optimizations.

    Global option that disables global registration of loggers set_automatic_registration(bool). Thanks @pabloariasal (#892).

    โšก๏ธ Optimize logging of C strings by using string_view to avoid unnecessary copy. Thanks @peergynt (cb71fea).

    โœ… Use google benchmark to test latencies.

    ๐Ÿ›  Fixes

    • logger::error_handler() should be const (#881, thanks @shoreadmin for reporting)
    • Cleanup header file: remove log_msg.h include from fmt_helper.h. Thanks @peergynt (1b391cc)
    • ๐Ÿ›  Fix log_msg constructor doesn't initialize all fields (#888. Thanks @curiouserrandy for reporting).
    • ๐ŸŒฒ Change log_msg&& to log_msg& params. Thanks @rwen2012 (794a636)
    • ๐Ÿ›  Fix typo in Android example. Thanks @ZaMaZaN4iK (f5a2725)
    • ๐Ÿ›  Fix Compiling error VS2017 #902 (Thanks @JaNurz for reprting).
    • ๐Ÿ›  Fix thread id is prefixed with zeros #908 (Thanks @klrakiranpradeep for reporting).
    • ๐Ÿ›  Fix OSX build. Thanks @DanielChabrowski (c7f42d1).
    • ๐Ÿ›  Fix and optimize usage of fmt::internal::count_digits(..) for better support 32/64 bits. Thanks @DanielChabrowski (c7f42d1, f1ab6fe).
    • ๐Ÿ‘ Better handling of rotation errors (b64e446).
    • ๐Ÿ›  Fix exceptions on file size calculation on Windows XP x64 and Windows Server 2003 x64. Thanks @lestera (#926).
    • 0๏ธโƒฃ Do not attempt to default operator= when it is implicitly deleted. Thanks @dpacbach (63a475d).
    • ๐Ÿ‘‰ Make an implicit cast from int --> uint32_t explicit. Thanks @dpacbach (a6152eb).
    • โœ… Enable testing in the Travis config file. Thanks @dpacbach (f5dc166).
    • ๐Ÿ›  Fix the text alignment in the example. Thanks @bzindovic (d6086da4856df510657ffe4ef6b894e902b4b83).
    • ๐Ÿ›  Fix typos. Thanks @peergynt (ce8cf1e).
    • ๐Ÿ›  Fix handling of external fmt lib in cmake. Thanks @cneumann (084bc72).
    • ๐Ÿ›  Fix VC WinRT compilation. Thanks @taniey for reporting (@948).
    • ๐Ÿ›  Fix typo in file_helper.h. Thanks @brridder (fb702f9).