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

Changelog History

  • v1.3.3 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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