From f61af5529c72d992d82704ff0f4f519c7b515200 Mon Sep 17 00:00:00 2001 From: KjellKod Date: Tue, 17 Dec 2013 23:37:12 -0700 Subject: [PATCH] Updated README... still in progress --- README | 144 ++++++++++++++++++++------------------------------------- 1 file changed, 50 insertions(+), 94 deletions(-) diff --git a/README b/README index 674e3d2..be86f85 100644 --- a/README +++ b/README @@ -1,12 +1,17 @@ -EXAMPLE USAGE OF G2LOG -======================= -Optional to use either streaming or printf-like syntax - LOG(INFO) << "As Easy as ABC or " << 123; - or - LOGF(WARNING, "Printf-style syntax is also %s", "available"); +# G3Log (text below is in progress) + +## EXAMPLE USAGE +#### Optional to use either streaming or printf-like syntax +``` +LOG(INFO) << "streaming API is as easy as ABC or " << 123; + +LOGF(WARNING, "Printf-style syntax is also %s", "available"); +``` -Conditional logging + + +#### Conditional logging int less = 1; int more = 2 LOG_IF(INFO, (less more) << "CHECK(false) triggers a FATAL message"); +``` +CHECK(less != more); // not FATAL +CHECK(less > more) << "CHECK(false) triggers a FATAL message"); +``` +## What G3Log is: +* ***G3log*** is the acting name for the third version of g2log and it stands for ***g2log with dynamic sinks*** +* G3log is an asynchronous, "crash-safe" logger. You can read more about it's use here [[g2log version]]( +http://www.codeproject.com/Articles/288827/g2log-An-efficient-asynchronous-logger-using-Cplus) -WHAT IS G2LOG? -==================== -In depth information can be found at -http://www.codeproject.com/Articles/288827/g2log-An-efficient-asynchronous-logger-using-Cplus +## Benefits you get when using G3log ## +1. Easy to use, clean syntax and blazingly fast logger. - - -Or just read the short summary below: -------------------------------------- - -G2log is an asynchronous, "crash safe" logger and design-by-contract library. -What this means in practice is that - -1. All the slow I/O disk access is done in a background thread. This ensures that the +2. All the slow log I/O disk access is done in a background thread. This ensures that the other parts of the software can immediately continue with their work after making a log entry. -2. g2log provides logging, Design-by-Contract [#CHECK], and flush of log to file at - shutdown. Buffered logs will be written to file before the application shuts down. +3. G3log provides logging, Design-by-Contract [#CHECK], and flush of log to file at + shutdown. Buffered logs will be written to the sink before the application shuts down. -3. It is thread safe, so using it from multiple threads is completely fine. +4. It is thread safe, so using it from multiple threads is completely fine. -4. It is CRAsH SAFE, in that it will catch certain fatal signals, so if your application crashes due to, say a segmentation fault, SIGSEGV, or some other fatal - signals it will log and save to file this crash and all previously buffered log +5. It is *CRASH SAFE*. It will save the made logs to the sink before it shuts down. +The logger will catch certain fatal signals, so if your application crashes due to, say a segmentation fault, *SIGSEGV*, or some other fatal signal it will log and save the crash and all previously buffered log entries before exiting. -5. It is cross platform. For now, tested on Windows7 and Ubuntu +6. It is cross platform. Tested and used by me or by clients on OSX, Windows, Ubuntu, CentOS -6. On Ubuntu a caught fatal signal will generate a stack dump to the log. This is - not yet available on Windows due to the platforms complexity when traversing the - stack. Stack dump on Windows will be released later and a beta is available on - request. +7. On *Nix* systems a caught fatal signal will generate a stack dump to the log. A Beta version exist on Windows and can be released on request. + -7. G2log is used in commercial products as well as hobby projects since early 2011. +8. G2log is used world wide in commercial products as well as hobby projects since early 2011. The code is given for free as public domain. This gives the option to change, use, and do whatever with it, no strings attached. -8. The stable version of g2log is available at https://bitbucket.org/KjellKod/g2log - The in-development g2log where new features are tried out is available at - https://bitbucket.org/KjellKod/g2log-dev ongoing and released features can be - seen at https://bitbucket.org/KjellKod/g2log-dev/wiki/Home +9. Three versions of g2log exist. + * This version: g3log : which is made to faciliate easy adding of custom log receivers. + * [g2log-dev](https://bitbucket.org/KjellKod/g2log-dev): Acting as feature try-out and playground. + * [g2log](https://bitbucket.org/KjellKod/g2log): The original. Simple, easy to modify and with the most OS support. Clients use g2log on environments such as OSX/Clang, Ubuntu, CentOS, Windows/mingw, Windows/Visual Studio. -LATEST CHANGES -===================== -2012, Oct 14th -* Complete threadsafe use of localtime for timestamp. (see code: g2time) -* Runtime change of filename, request of filename. (see code g2logwoker g2future) -* Tested on - x86 Windows7: Visual Studio 2012 Desktop Express - x86 Ubuntu 11.04: gcc 4.7.3 - x64 Ubuntu 12...: gcc 4.7.2 - x64 Windows7: Visual Studio 2012 Professional - - NOTE: It does NOT work with "Visual Studio 11 Beta" (not as C++11 compliant - as VS2012) +# TO WRITE +* Example of how to use G2log +* Sinks easy to follow examples - -HOW TO BUILD -=================== -This g2log is a snapshot from KjellKod repository. -It contains what is needed to build example, unit test and performance test of g2log. - -justthread C++11 thread library is no longer needed. -* On Windows it is enough to use Visual Studio 11 (2012). -* On Linux it is enough to use gcc4.7.2. - -The CMakeFile.txt is updated to reflect that, the justthread parts is commented -away in case someone still needs that. - -If you want to integrate g2log in your own software you need the files under -g2log/src - - - -BUILDING g2log: +# BUILDING g2log: ----------- The default is to build an example binary 'g2log-FATAL' I suggest you start with that, run it and view the created log also. @@ -113,14 +86,14 @@ If you are interested in the performance or unit tests then you can enable the creation of them in the g2log/CMakeLists.txt file. See that file for more details ---- Building on Linux --- +*** Building on Linux *** cd g2log mkdir build cd build cmake .. make ---- Building on Windows --- +*** Building on Windows *** Please use the Visual Studio 11 (2012) command prompt "Developer command prompt" cd g2log mkdir build @@ -131,32 +104,15 @@ Release\g2log-FATAL.exe -CONTENTS -=========================== +#SOURCE CONTENTS 3rdParty -- gtest, glog. ----------------------- -gtest is needed for the unit tests. -glog is only needed if you want to run the glog vs g2log comparison tests - -gtest is enabled as a DEFAULT option in the CmakeFiles.txt file. If the unit test -is not important for you then just DISABLE that option. By default the gtest zipped - library must be UNPACKED before it is used (compilation) - -gtest It IS included by the CMake and you don't need to do install or compile it in - any other way than through the g2log cmake setup. - -Google's glog is not included and must be installed ONLY IF you want to run the comparison tests +*gtest is needed for the unit tests. +*glog is only needed if you want to run the glog vs g2log comparison tests -About the A ctive Object --------------------- -Is made with standard C++ components with the help of the latest C++11 and std::thread features (thanks to justthread). For more details see -www.kjellkod.cc/active-object-with-cpp0x. -An example is provided. Other examples on pre C++0x Active Objects can also be -found at www.kjellkod.cc (code page) - -If you like it (or not) it would be nice with some feedback. That way I can +If you like this logger (or not) it would be nice with some feedback. That way I can improve g2log and it is also nice to see if someone is using it. If you have ANY questions or problems please do not hesitate in contacting me on my blog http://kjellkod.wordpress.com/2011/11/17/kjellkods-g2log-vs-googles-glog-are-asynchronous-loggers-taking-over/