Skip to content

Releases: KjellKod/g3sinks

2.2 minor update, CI, output targets, installation and snippets

04 Feb 11:57
e3b5af4
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 2.0.2...2.2

2.0.2 cmake build tiny improvement

06 Nov 23:39
bf10641
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 2.0.1...2.0.2

filesystem adoption. Boost dependency is removed

20 Mar 08:26
f703079
Compare
Choose a tag to compare

What's Changed

  • c++17 replaces boost dependency by @KjellKod in #124
  • Code cleanup
  • Added formatting help with clang-format and sublime
    Full Changelog: 1.1.5...2.0.1

1.1.5 Last release that requires boost library support.

19 Mar 15:58
aebf9c1
Compare
Choose a tag to compare

Any following release will be without requiring boost library support.
This means that apart from zlib there are no other 3rd party libraries that needs to be downloaded and installed.

Changes between 1.1.4 and 1.1.5
repository and system build changes

  • Removed obsolete travis CI and replaced it with OSX/Linux CI GitActions for CI pipeline
  • Updated documentation, templates for PR, issues, questions,
  • Downloading gtest instead of storing it in the repo (#117, #118, #119))
  • CI support Windows moved from Visual Studio 2015 to Visual Studio 2017 (#113)
  • CMake set for using C++17 standard (#113)

Test improvement

  • Increased test coverage for LogRotate with filter (#115)

What's Changed Described By Commits

New Contributors

Full Changelog: 1.1.4...1.1.5

Last release (?) with C++14 support. From now on master will be on C++17/20

16 Dec 06:28
17d0c4a
Compare
Choose a tag to compare

1.1.3 Last Version with the original CMake Build Structure

01 Jul 02:37
3fbcefc
Compare
Choose a tag to compare

Improvements

1.1.2 New Logging Sinks. Summary of changes after 1.1.1:

07 Jun 05:39
8c1403c
Compare
Choose a tag to compare

New Sink and Existing sink improvements

Build improvments

Bug fix

c++11 version support (after this version g3sinks will require c++14)

03 Mar 17:53
Compare
Choose a tag to compare

Curtesy release for users that have access to c++11. From now on master and newer releases will be on c++14 with c++17 possibility.

Changes

  • Update to work with improved time format in g3log
  • Improved version tagging
  • Added Travis Cloud CI for branch and pull request testing

logroate with Linux build (make install or make package)

30 Mar 06:34
Compare
Choose a tag to compare

Building g3sinks

Requirements

g3log

G3sinks requires g3log to be installed.
The g3log install location has to be specified during the cmake build step. In the example below the g3log installation location is /usr/local with libraries in '/usr/local/lib' and 'headers in '/usr/local/include'
The given argument for the location would then be : 'cmake -DCMAKE_PREFIX_PATH=/usr/local/'

boost

G3sinks requires boost to be installed.
For installing boost please follow their instructions.

The boost install location BOOST_ROOT or Boost_INCLUDE_DIR has to be specified during the cmake build step.
In the example below the boost installation
location is /usr/local

ZLIB

The ZLIB library must be installed for the logrotate to be able to compress the old log files
in Ubuntu it can be installed with sudo apt-get install zlib1g-dev. Please see your specific platform for details or go to the zlib page

Building with unit tests added

cd g3sinks
cd 3rdparty
unzip gtest-1.7.0.zip
cd ..
cd logrotate
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/local/ -DBOOST_ROOT=/usr/local -DADD_LOGROTATE_UNIT_TEST=ON ..
make -j

Executing the unit tests

./UnitTestRunneer

Installing

sudo make install

Alternative on Debian systems

make package
sudo dpkg -i g3LogRotate-<package_version>Linux.deb

G3log and Sink Usage Code Example

Example usage where a logrotate sink is added. The logrotate limit is changed from the default to instead be 10MB. The limit is changed by calling the sink handler which passes the function call through to the actual logrotate sink object.


// main.cpp
#include <g3log/g3log.hpp>
#include <g3log/logworker.h>
#include <g3sinks/logrotate.hpp>
#include <g3log/std2_make_unique.hpp>

int main(int argc, char**argv) {
   using namespace g3;
   std::unique_ptr<LogWorker> logworker{ LogWorker::createLogWorker() };
   auto sinkHandle = logworker->addSink(std2::make_unique<LogRotate>(),
                                          &LogRotate::save);
   
   // initialize the logger before it can receive LOG calls
   initializeLogging(logworker.get());            
            
   // You can call in a thread safe manner public functions on the logrotate sink
   // The call is asynchronously executed on your custom sink.
   const int k10MBInBytes = 10 * 1024 * 1024;
   std::future<void> received = sinkHandle->call(&LogRotate::setMaxLogSize, k10MBInBytes);
   
   // Run the main part of the application. This can be anything of course, in this example
   // we'll call it "RunApplication". Once this call exits we are in shutdown mode
   RunApplication();

   // If the LogWorker is initialized then at scope exit the g3::shutDownLogging() will be 
   // called automatically. 
   //  
   // This is important since it protects from LOG calls from static or other entities that will go out of
   // scope at a later time. 
   //
   // It can also be called manually if for some reason your setup is different then the one highlighted in
   // this example
   g3::shutDownLogging();
}