All Versions
Latest Version
Avg Release Cycle
466 days
Latest Release
268 days ago

Changelog History

  • v1.3.3

    June 07, 2020

    πŸ“š Documentation changes

    Feature improvement

    Cleanup Help

    Debug levels (#259) @DerekJuba-NIST
    Ambiguous constructor error. (#262) @DigitalInBlue
    ⚠ Warning about whitespace (#265) @codekrafter
    Code Cleanup (#336) @JoelStienlet

    πŸ› Bug fixing

    πŸ— Platform support and Build Improvements

    Installation and Project integration

  • v1.3.2

    March 31, 2018

    πŸ— g3log v.1.3.1 had a CMake error that stopped c++11 only compiler from building.
    g3log v1.3.2 contains the corrected CMake files.

    Thanks to @esdevcr for providing this patch correction.

    As g3log goes forward the branch 1.3.x will be the "c++11 master branch" in case of future changes.

  • v1.3.1

    March 03, 2018

    Summary of changes since version 1.3

    Thanks to the following coders for both major and minor contributions

    Major changes mentioned below, smaller changes not mentioned.

    Major Improvements

    • Significantly improved CMake options for install options on multiple platforms
    • πŸ‘Œ support for full filenames in logs 226(thanks @spinorx)
    • 🐧 huge improvements for low granularity of log timestamps on both Windows and Linux 200
    • πŸ‘ iOS support 198
    • πŸ”Š CMake support for arbitrary, compile time decided max value for the "printf" like logs [208] (#208)

    πŸ›  Major Bugfix:

    • 🌲 LOG macros and if-statements without curly brances (231
    • ⚑️ doc updates for API and internal code comments


    πŸ‘Œ Thanks to @AndreasSchoenle191 there is now a branch with WCHAR support. See branch: wchar_support

  • v1.3

    March 30, 2017

    Summary of changes since 1.2

    • 🌲 Greatly improved logging format with nanoseconds support.
    • βž• Added ARM support as well as improved OSX and Windows support
    • πŸ— Build and API improvements
    • πŸ— Build and API document improvements


    Thanks to the community for feedback, usage, code and review contributions.
    The following deserves an extra thank you :)

    Chronological Summary

    March 2017

    • πŸ‘‰ cpackage improvements : make install and make package
    • πŸ‘Œ improved API and README
    • πŸ›  bugfix nanosecond fractions on 32 bit Windows systems

    February 2017

    • mingw improvements

    January 2017

    • πŸ›  bugfix nanosecond fractions for - OS speifics
    • πŸ— Visual studio build improvements

    December 2016

    • βž• added support for ARM
    • ⚑️ build and continuous integration updates
    • 🌲 logging levels improvement
    • 🏁 unit test corrections for fatal signal handling on Windows
    • cleanup

    October 2016

    • πŸ›  bugfixes
    • 🏁 logging for Windows improved
    • βž• added unit tests missing for Windows logging levels

    August 2016

    • βž• added nanosecond timestamps to log and improved the logging formatting
    • ⚑️ API and README updated
    • πŸ›  bugfixes

    July 2016

    • cleanup

    June 2016

    • cross compiler linking improvements

    May 2016

    • πŸ›  bugfix for potential deadlock during shutdown

    March 2016

    • 🌲 log formatting bug corrected.
  • v1.2

    March 07, 2016

    πŸš€ Nothing major but it's a good point to call a new g3log release, 1.2, since we have some nice improvement to fatal handling, default logging as well as improved platform support on FreeBSD, Windows, Linux and OSX.

    🐧 On Linux we now also have the possibility to do 'make package'. On OSX installation can be done with 'brew install g3log'.

    Summary of changes since 1.1:
    πŸ›  Fixed CPackage to work for Linux. Thanks to Hans Duedal #83
    FYI: OSX users can now use β€˜brew install g3log’

    0️⃣ Possiblity to override the default β€˜g3log’ adding to the file name for the default file logger. Thanks to jkhoogland, pull request #82, issue: ##75
    πŸ‘ Allowed parenthesis in filename paths. pull request #81, issue ##31
    πŸ‘Œ Improved Linux Clang support, pull request: #77

    🚚 cleanup code, removed unused includes: #72

    API cleanup. pull request: #66 thanks to Lu Guanqun
    🏁 Windows build support, adding debug symbols, pull request #65 thanks to Christos cstamatopoulos\

    πŸ›  fixed Windows compilation issue with atomic, pull request: #63 thanks to Christos Cstamatopoulos
    πŸ‘Œ Improved API documentation Readme.markdown and API.markdown, pull requests: #64, #54
    πŸ‘€ default logger will flush after every log entry written. (see for other ways of handling log writing), pull request: #58
    CHECK_F and CHECKF exists. CHECK_F is kept for backwards compatiability.
    πŸ‘Œ improved testing for dynamic logging levels

    October 2015
    βœ‚ removed warnings for gcc5, pull request: #55
    βž• Added API.markdown to explain in more detail the g3log API
    ⚠ suppress 'thread attribute directive ignored' warning on mingw (thands to Turenar )

    September 2015
    🚦 Override of signal handler (especially useful for zmq users who need this for overriding SIGTERM, pull request #48
    0️⃣ default log formatting improved. pull request #52, #50, thanks to Craig Cogdill
    <date and time> <file>:L<line> to
    <date and time> <file>-><function>:<line>,
    πŸ‘Œ Support for FreeBSD, pull request #53,. thanks to Robert Ayrapetyan.

  • v1.1

    September 10, 2015

    With this release g3log will:

    1) Gracefully handle aggressive crashing scenarios: Imagine hundreds or throusands of threads starting up and all racing to do a SIGSEGV crash? (On v1.0 that worked fine for Linux/Gcc but for OSX/Clang it did not work well. And the exit of the process could be delayed a very long time)

    2) Improved sink construction and logger initialization API. See example a,b,c below
    a. Create a logger
    πŸ‘· std::unique_ptr<LogWorker> logworker{ LogWorker::createLogWorker() }

    b) Add of custom sinks (here named "CustomSink")

    auto sinkHandle = logworker->addSink(std2::make_unique<CustomSink>(), 

    0️⃣ c) Add a default file logging sink (more sinks are available at g3sinks)

    auto handle= worker->addDefaultLogger(prefix, path_to_log_file);

    🌲 3) Custom logging levels can be created. Please see g3log/loglevels.hpp for the value ranges
    🌲 The example will create a logging level "HEY".

    const LEVELS HEY {WARNING.value + 1, {"Hey There"}};
    LOG(HEY) << "Hello"

    4) A custom pre death hook can be put in place to do custom actions when a fatal event is caught.
    This should be set after the initialization of the logger (the initialization will otherwise clear it)

              // example showing a simple LOG(INFO) call but it could really be anything
              // After the hook is called it will be cleared so it can only be called once
             // if you need multiple "death cleanup" calls then the best is to bundle them within the allowed callback
            namespace {
            void Ooops() {
               LOG(INFO) << "Death is imminent";
            } // namespace
           .... elsewhere in the code 
  • v1.0

    October 13, 2012