Skip to content

Version 1.3.0

Compare
Choose a tag to compare
@gabime gabime released this 11 Jan 14:23
· 2230 commits to v1.x since this release

Improvements

  • Upgraded to the latest and greatest fmt library version 5.3.0.

  • New API for default logger spdlog::trace(..), spdlog::debug(..), spdlog::info(..), etc.
    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).
  • 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).