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 callingspdlog::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>
.
๐ฒ UseLOG_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 evaluatesome_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&&
tolog_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).