Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package easyloggingpp for openSUSE:Factory checked in at 2021-04-14 10:10:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/easyloggingpp (Old) and /work/SRC/openSUSE:Factory/.easyloggingpp.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "easyloggingpp" Wed Apr 14 10:10:49 2021 rev:2 rq:884797 version:9.97.0 Changes: -------- --- /work/SRC/openSUSE:Factory/easyloggingpp/easyloggingpp.changes 2020-01-08 17:57:11.609724233 +0100 +++ /work/SRC/openSUSE:Factory/.easyloggingpp.new.2401/easyloggingpp.changes 2021-04-14 10:11:15.709522336 +0200 @@ -1,0 +2,13 @@ +Tue Apr 13 04:16:33 UTC 2021 - Luigi Baldoni <aloi...@gmx.com> + +- Update to version 0.97.0 + Features: + * ENABLE_EXECINFO option in CMake to enable/disable stack trace + Bug Fixes: + * Fix attempt to access the released memory + * Fix April month name + * Refer to unknown user as unknown-user instead of user + * Handle low memory situation + * Fix many compiler warnings + +------------------------------------------------------------------- Old: ---- easyloggingpp-9.96.7.tar.gz New: ---- easyloggingpp-9.97.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ easyloggingpp.spec ++++++ --- /var/tmp/diff_new_pack.Vx0N5b/_old 2021-04-14 10:11:16.285523308 +0200 +++ /var/tmp/diff_new_pack.Vx0N5b/_new 2021-04-14 10:11:16.289523315 +0200 @@ -1,7 +1,7 @@ # # spec file for package easyloggingpp # -# Copyright (c) 2019 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: easyloggingpp -Version: 9.96.7 +Version: 9.97.0 Release: 0 Summary: Single header C++ logging library License: MIT ++++++ easyloggingpp-9.96.7.tar.gz -> easyloggingpp-9.97.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/.github/FUNDING.yml new/easyloggingpp-9.97.0/.github/FUNDING.yml --- old/easyloggingpp-9.96.7/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/easyloggingpp-9.97.0/.github/FUNDING.yml 2020-12-25 10:02:08.000000000 +0100 @@ -0,0 +1 @@ +custom: https://amrayn.com/donate,https://www.paypal.me/mkhan3189 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/ACKNOWLEDGEMENTS.md new/easyloggingpp-9.97.0/ACKNOWLEDGEMENTS.md --- old/easyloggingpp-9.96.7/ACKNOWLEDGEMENTS.md 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/ACKNOWLEDGEMENTS.md 2020-12-25 10:02:08.000000000 +0100 @@ -5,11 +5,11 @@ | **Github User** | **Contribution** | |--------------------------------------|----------------------------------| -| [@aparajita](https://github.com/aparajita) | [Separated out .h and .cc file](https://github.com/muflihun/easyloggingpp/pulls?q=is%3Apr+author%3Aaparajita) | -| [@adah1972](https://github.com/adah1972) | [A lot of contributions](https://github.com/muflihun/easyloggingpp/pulls?q=is%3Apr+author%3Aadah1972) | -| [@miguelmartin75](https://github.com/miguelmartin75) | [Issue #11](https://github.com/muflihun/easyloggingpp/issues/11), [PR #16](https://github.com/muflihun/easyloggingpp/pull/16) | -| [@moneromooo-monero](https://github.com/moneromooo-monero) | [A lot of contributions](https://github.com/muflihun/easyloggingpp/pulls?q=is%3Apr+author%3Amoneromooo-monero)| -| [@MonsieurNicolas](https://github.com/MonsieurNicolas) | [PR #593](https://github.com/muflihun/easyloggingpp/pull/593) | -| [@acowley](https://github.com/acowley) | [PR #593](https://github.com/muflihun/easyloggingpp/pull/577) | -| [@rggjan](https://github.com/rggjan) | [PR 561](https://github.com/muflihun/easyloggingpp/pull/561) | +| [@aparajita](https://github.com/aparajita) | [Separated out .h and .cc file](https://github.com/amrayn/easyloggingpp/pulls?q=is%3Apr+author%3Aaparajita) | +| [@adah1972](https://github.com/adah1972) | [A lot of contributions](https://github.com/amrayn/easyloggingpp/pulls?q=is%3Apr+author%3Aadah1972) | +| [@miguelmartin75](https://github.com/miguelmartin75) | [Issue #11](https://github.com/amrayn/easyloggingpp/issues/11), [PR #16](https://github.com/amrayn/easyloggingpp/pull/16) | +| [@moneromooo-monero](https://github.com/moneromooo-monero) | [A lot of contributions](https://github.com/amrayn/easyloggingpp/pulls?q=is%3Apr+author%3Amoneromooo-monero)| +| [@MonsieurNicolas](https://github.com/MonsieurNicolas) | [PR #593](https://github.com/amrayn/easyloggingpp/pull/593) | +| [@acowley](https://github.com/acowley) | [PR #593](https://github.com/amrayn/easyloggingpp/pull/577) | +| [@rggjan](https://github.com/rggjan) | [PR 561](https://github.com/amrayn/easyloggingpp/pull/561) | | [@sgtcodfish](https://github.com/sgtcodfish) | Support for emscripten | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/CHANGELOG.md new/easyloggingpp-9.97.0/CHANGELOG.md --- old/easyloggingpp-9.96.7/CHANGELOG.md 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/CHANGELOG.md 2020-12-25 10:02:08.000000000 +0100 @@ -1,7 +1,7 @@ # Change Log ## [9.96.7] - 24-11-2018 -- Adds support for compiling easyloggingpp using Emscripten. This allows the library to be compiled into Javascript or WebAssembly and run in the browser while logging to the browser's Javascript console. +- Adds support for compiling easyloggingpp using Emscripten. This allows the library to be compiled into JavaScript or WebAssembly and run in the browser while logging to the browser's JavaScript console. ## [9.96.6] - 24-11-2018 - Storage constructor (indirectly) attempts to access elStorage before it's initialized (issue #660) (@Barteks2x) @@ -26,7 +26,7 @@ ## [9.96.2] - 27-02-2018 ### Updates - Dispatcher now passes in pointer to log message instead of creating on the fly -- Introduced new constructor for `Writer` for advanced usage (see muflihun/residue) +- Introduced new constructor for `Writer` for advanced usage (see amrayn/residue) - Use `std::unordered_map` for memory management instead of `std::map` issue #611 ## [9.96.1] - 23-02-2018 @@ -71,13 +71,13 @@ ## [9.95.0] - 02-08-2017 ### Added - - Added NetBSD as unix [coypoop](https://github.com/muflihun/easyloggingpp/pull/548/commits) + - Added NetBSD as unix [coypoop](https://github.com/amrayn/easyloggingpp/pull/548/commits) - Ignore `NDEBUG` or `_DEBUG` to determine whether debug logs should be enabled or not. Use `ELPP_DISABLE_DEBUG_LOGS` ### Fixes - - Fix compile when `_USE_32_BIT_TIME_T` defined [gggin](https://github.com/muflihun/easyloggingpp/pull/542/files) - - Fix invalid usage of safeDelete which can cause an error with valgrind [Touyote](https://github.com/muflihun/easyloggingpp/pull/544/files) - - Add code to ensure no nullptr references [tepperly](https://github.com/muflihun/easyloggingpp/pull/512/files) + - Fix compile when `_USE_32_BIT_TIME_T` defined [gggin](https://github.com/amrayn/easyloggingpp/pull/542/files) + - Fix invalid usage of safeDelete which can cause an error with valgrind [Touyote](https://github.com/amrayn/easyloggingpp/pull/544/files) + - Add code to ensure no nullptr references [tepperly](https://github.com/amrayn/easyloggingpp/pull/512/files) ## [9.94.2] - 12-04-2017 ### Added @@ -111,4 +111,4 @@ - Custom format specifier now has to return `std::string` instead - Merged `thread_name` with `thread` if thread name is available it's used otherwise ID is displayed -For older versions please refer to [https://github.com/muflihun/easyloggingpp/tree/master/doc](https://github.com/muflihun/easyloggingpp/tree/master/doc) +For older versions please refer to [https://github.com/amrayn/easyloggingpp/tree/master/doc](https://github.com/amrayn/easyloggingpp/tree/master/doc) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/CMakeLists.txt new/easyloggingpp-9.97.0/CMakeLists.txt --- old/easyloggingpp-9.96.7/CMakeLists.txt 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/CMakeLists.txt 2020-12-25 10:02:08.000000000 +0100 @@ -46,6 +46,12 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/easyloggingpp.pc DESTINATION "${ELPP_PKGCONFIG_INSTALL_DIR}") +include(CheckIncludeFileCXX) +check_include_file_cxx("execinfo.h" HAVE_EXECINFO) +if (HAVE_EXECINFO) + add_definitions(-DHAVE_EXECINFO) +endif() + if (build_static_lib) if (lib_utc_datetime) add_definitions(-DELPP_UTC_DATETIME) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/LICENSE new/easyloggingpp-9.97.0/LICENSE --- old/easyloggingpp-9.96.7/LICENSE 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/LICENSE 2020-12-25 10:02:08.000000000 +0100 @@ -1,10 +1,10 @@ The MIT License (MIT) -Copyright (c) 2012-2018 Zuhd Web Services +Copyright (c) 2012-2018 Amrayn Web Services Copyright (c) 2012-2018 @abumusamq -https://github.com/zuhd-org/ -https://zuhd.org +https://github.com/amrayn/ +https://amrayn.com https://muflihun.com Permission is hereby granted, free of charge, to any person obtaining a copy of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/README.md new/easyloggingpp-9.97.0/README.md --- old/easyloggingpp-9.96.7/README.md 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/README.md 2020-12-25 10:02:08.000000000 +0100 @@ -6,22 +6,23 @@ > **Manual For v9.96.7** -[](#build-matrix) -[](#build-matrix) +[](#build-matrix) +[](#build-matrix) [](https://ci.appveyor.com/project/abumusamq/easyloggingpp-node) -[](https://github.com/muflihun/easyloggingpp/releases/latest) +[](https://github.com/amrayn/easyloggingpp-node/releases/latest) [](https://www.npmjs.com/package/easyloggingpp) -[](https://github.com/muflihun/easyloggingpp/blob/master/LICENCE) -[](https://github.com/muflihun/easyloggingpp/releases/latest) +[](https://github.com/amrayn/easyloggingpp/blob/master/LICENCE) +[](https://github.com/amrayn/easyloggingpp/releases/latest) -[](https://www.paypal.me/zuhd/25) +[](https://amrayn.com/donate) +#### Looking for maintainers!! ### Quick Links - [![download] Latest Release](https://github.com/muflihun/easyloggingpp/releases/latest) + [![download] Latest Release](https://github.com/amrayn/easyloggingpp/releases/latest) [![notes] Changelog](/CHANGELOG.md) @@ -107,14 +108,14 @@ # Overview Easylogging++ is single header efficient logging library for C++ applications. It is extremely powerful, highly extendable and configurable to user's requirements. It provides ability to [write your own _sinks_](/samples/send-to-network) (via featured referred as `LogDispatchCallback`). This library is currently used by [hundreds of open-source projects on github](https://github.com/search?q=%22easylogging%2B%2B.h%22&type=Code&utf8=%E2%9C%93) and other open-source source control management sites. -This manual is for Easylogging++ v9.96.7. For other versions please refer to corresponding [release](https://github.com/muflihun/easyloggingpp/releases) on github. +This manual is for Easylogging++ v9.96.7. For other versions please refer to corresponding [release](https://github.com/amrayn/easyloggingpp/releases) on github. -> You may also be interested in [Residue](https://github.com/muflihun/residue/) logging server. +> You may also be interested in [Residue](https://github.com/amrayn/residue/) logging server. [![top] Goto Top](#table-of-contents) ### Why yet another library -If you are working on a small utility or large project in C++, this library can be handy. Its based on single header and only requires to link to single source file. (Originally it was header-only and was changed to use source file in [issue #445](https://github.com/muflihun/easyloggingpp/issues/445). You can still use header-only in [v9.89](https://github.com/muflihun/easyloggingpp/releases/tag/9.89)). +If you are working on a small utility or large project in C++, this library can be handy. Its based on single header and only requires to link to single source file. (Originally it was header-only and was changed to use source file in [issue #445](https://github.com/amrayn/easyloggingpp/issues/445). You can still use header-only in [v9.89](https://github.com/amrayn/easyloggingpp/releases/tag/9.89)). This library has been designed with various thoughts in mind (i.e, portability, performance, usability, features and easy to setup). @@ -145,9 +146,9 @@ # Getting Started ### Download -Download latest version from [Latest Release](https://github.com/muflihun/easyloggingpp/releases/latest) +Download latest version from [Latest Release](https://github.com/amrayn/easyloggingpp/releases/latest) -For other releases, please visit [releases page](https://github.com/muflihun/easyloggingpp/releases). If you application does not support C++11, please consider using [v8.91](https://github.com/muflihun/easyloggingpp/tree/v8.91). This is stable version for C++98 and C++03, just lack some features. +For other releases, please visit [releases page](https://github.com/amrayn/easyloggingpp/releases). If you application does not support C++11, please consider using [v8.91](https://github.com/amrayn/easyloggingpp/tree/v8.91). This is stable version for C++98 and C++03, just lack some features. [![top] Goto Top](#table-of-contents) @@ -174,7 +175,7 @@ g++ main.cc easylogging++.cc -o prog -std=c++11 ``` -That simple! Please note that `INITIALIZE_EASYLOGGINGPP` should be used once and once-only otherwise you will end up getting compilation errors. This is definiting several `extern` variables. This means it can be defined only once per application. Best place to put this initialization statement is in file where `int main(int, char**)` function is defined, right after last include statement. +That simple! Please note that `INITIALIZE_EASYLOGGINGPP` should be used once and once-only otherwise you will end up getting compilation errors. This is the definition of several `extern` variables. This means it can be defined only once per application. Best place to put this initialization statement is in file where `int main(int, char**)` function is defined, right after last include statement. ### Install (Optional) If you want to install this header system-wide, you can do so via: @@ -192,7 +193,18 @@ * `lib_utc_datetime` - Defines `ELPP_UTC_DATETIME` * `build_static_lib` - Builds static library for Easylogging++ -With that said, you will still need `easylogging++.cc` file in order to compile. For header only, please check [v9.89](https://github.com/muflihun/easyloggingpp/releases/tag/9.89) and lower. +With that said, you will still need `easylogging++.cc` file in order to compile. For header only, please check [v9.89](https://github.com/amrayn/easyloggingpp/releases/tag/9.89) and lower. + +Alternatively, you can download and install easyloggingpp using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: + + git clone https://github.com/Microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.sh + ./vcpkg integrate install + ./vcpkg install easyloggingpp + +The easyloggingpp port in vcpkg is kept up to date by Microsoft team members and community contributors. +If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. [![top] Goto Top](#table-of-contents) @@ -423,7 +435,7 @@ You can also specify your own format specifiers. In order to do that you can use `el::Helpers::installCustomFormatSpecifier`. A perfect example is `%ip_addr` for TCP server application; ```C++ -const char* getIp(void) { +const char* getIp(const el::LogMessage*) { return "192.168.1.1"; } @@ -444,9 +456,9 @@ |--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------| | `NewLineForContainer (1)` | Makes sure we have new line for each container log entry | | `AllowVerboseIfModuleNotSpecified (2)` | Makes sure if -vmodule is used and does not specifies a module, then verbose logging is allowed via that module. Say param was -vmodule=main*=3 and a verbose log is being written from a file called something.cpp then if this flag is enabled, log will be written otherwise it will be disallowed. Note: having this defeats purpose of -vmodule | -| `LogDetailedCrashReason (4)` | When handling crashes by default, detailed crash reason will be logged as well (Disabled by default) ([issue #90](https://github.com/muflihun/easyloggingpp/issues/90)) | -| `DisableApplicationAbortOnFatalLog (8)` | Allows to disable application abortion when logged using FATAL level. Note that this does not apply to default crash handlers as application should be aborted after crash signal is handled. (Not added by default) ([issue #119](https://github.com/muflihun/easyloggingpp/issues/119)) | -| `ImmediateFlush (16)` | Flushes log with every log-entry (performance sensative) - Disabled by default | +| `LogDetailedCrashReason (4)` | When handling crashes by default, detailed crash reason will be logged as well (Disabled by default) ([issue #90](https://github.com/amrayn/easyloggingpp/issues/90)) | +| `DisableApplicationAbortOnFatalLog (8)` | Allows to disable application abortion when logged using FATAL level. Note that this does not apply to default crash handlers as application should be aborted after crash signal is handled. (Not added by default) ([issue #119](https://github.com/amrayn/easyloggingpp/issues/119)) | +| `ImmediateFlush (16)` | Flushes log with every log-entry (performance sensitive) - Disabled by default | | `StrictLogFileSizeCheck (32)` | Makes sure log file size is checked with every log | | `ColoredTerminalOutput (64)` | Terminal output will be colorful if supported by terminal. | | `MultiLoggerSupport (128)` | Enables support for using multiple loggers to log single message. (E.g, `CLOG(INFO, "default", "network") << This will be logged using default and network loggers;`) | @@ -456,7 +468,7 @@ | `HierarchicalLogging (2048)` | Enables hierarchical logging. This is not applicable to verbose logging.| | `CreateLoggerAutomatically (4096)` | Creates logger automatically when not available. | | `AutoSpacing (8192)` | Automatically adds spaces. E.g, `LOG(INFO) << "DODGE" << "THIS!";` will output "DODGE THIS!"| -| `FixedTimeFormat (16384)` | Applicable to performace tracking only - this prevents formatting time. E.g, `1001 ms` will be logged as is, instead of formatting it as `1.01 sec`| +| `FixedTimeFormat (16384)` | Applicable to performance tracking only - this prevents formatting time. E.g, `1001 ms` will be logged as is, instead of formatting it as `1.01 sec`| | `IgnoreSigInt (32768)` | When application crashes ignore Interruption signal | You can set/unset these flags by using static `el::Loggers::addFlag` and `el::Loggers::removeFlag`. You can check to see if certain flag is available by using `el::Loggers::hasFlag`, all these functions take strongly-typed enum `el::LoggingFlag` @@ -488,7 +500,7 @@ 1. Define macros using `-D` option of compiler, for example in case of `g++` you will do `g++ source.cpp ... -DELPP_SYSLOG -DELPP_THREAD_SAFE ...` (**recommended way**) - 2. Define macros inside `"easylogging++.h"` ([defining macros in other files won't work](https://github.com/muflihun/easyloggingpp/issues/590#issuecomment-346753951)) + 2. Define macros inside `"easylogging++.h"` ([defining macros in other files won't work](https://github.com/amrayn/easyloggingpp/issues/590#issuecomment-346753951)) | Macro Name | Description | |------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------| @@ -506,7 +518,7 @@ | `ELPP_DISABLE_FATAL_LOGS` | Disables fatal logs - (preprocessing) | | `ELPP_DISABLE_VERBOSE_LOGS` | Disables verbose logs - (preprocessing) | | `ELPP_DISABLE_TRACE_LOGS` | Disables trace logs - (preprocessing) | -| `ELPP_FORCE_ENV_VAR_FROM_BASH` | If environment variable could not be found, force using alternative bash command to find value, e.g, `whoami` for username. (DO NOT USE THIS MACRO WITH `LD_PRELOAD` FOR LIBRARIES THAT ARE ALREADY USING Easylogging++ OR YOU WILL END UP IN STACK OVERFLOW FOR PROCESSES (`popen`) (see [issue #87](https://github.com/muflihun/easyloggingpp/issues/87) for details)) | +| `ELPP_FORCE_ENV_VAR_FROM_BASH` | If environment variable could not be found, force using alternative bash command to find value, e.g, `whoami` for username. (DO NOT USE THIS MACRO WITH `LD_PRELOAD` FOR LIBRARIES THAT ARE ALREADY USING Easylogging++ OR YOU WILL END UP IN STACK OVERFLOW FOR PROCESSES (`popen`) (see [issue #87](https://github.com/amrayn/easyloggingpp/issues/87) for details)) | | `ELPP_DEFAULT_LOG_FILE` | Full filename where you want initial files to be created. You need to embed value of this macro with quotes, e.g, `-DELPP_DEFAULT_LOG_FILE='"logs/el.gtest.log"'` Note the double quotes inside single quotes, double quotes are the values for `const char*` and single quotes specifies value of macro | | `ELPP_NO_LOG_TO_FILE` | Disable logging to file initially| | `ELPP_NO_DEFAULT_LOG_FILE` | If you dont want to initialize library with default log file, define this macro. This will log to null device for unix and windows. In other platforms you may get error and you will need to use `ELPP_DEFAULT_LOG_FILE`. (PR for other platform's null devices are most welcomed) | @@ -521,7 +533,7 @@ | `ELPP_NO_CHECK_MACROS` | Do not define the *CHECK* macros | | `ELPP_NO_DEBUG_MACROS` | Do not define the *DEBUG* macros | | `ELPP_UTC_DATETIME` | Uses UTC time instead of local time (essentially uses `gmtime` instead of `localtime` and family functions) -| `ELPP_NO_GLOBAL_LOCK` | Do not lock the whole storage on dispatch. This should be used with care. See [issue #580](https://github.com/muflihun/easyloggingpp/issues/580)| +| `ELPP_NO_GLOBAL_LOCK` | Do not lock the whole storage on dispatch. This should be used with care. See [issue #580](https://github.com/amrayn/easyloggingpp/issues/580)| [![top] Goto Top](#table-of-contents) @@ -898,7 +910,7 @@ 4. `TIMED_BLOCK` macro resolves to a single-looped for-loop, so be careful where you define `TIMED_BLOCK`, if for-loop is allowed in the line where you use it, you should have no errors. - > You may be interested in [python script to parse performance logs](https://github.com/muflihun/easyloggingpp/issues/206) + > You may be interested in [python script to parse performance logs](https://github.com/amrayn/easyloggingpp/issues/206) [![top] Goto Top](#table-of-contents) @@ -1179,7 +1191,7 @@ ### Extending Library You can extend this library using various callback handlers and inheritable classes. -A perfect example of using these features is the logging server built with this library. It's called [Residue](https://github.com/muflihun/residue/) that is feature rich. In fact, you may be interested in using that instead of this library for your medium to large sized projects. +A perfect example of using these features is the logging server built with this library. It's called [Residue](https://github.com/amrayn/residue/) that is feature rich. In fact, you may be interested in using that instead of this library for your medium to large sized projects. #### Logging Your Own Class @@ -1356,7 +1368,7 @@ [![top] Goto Top](#table-of-contents) ### Logger Registration Callback -If you wish to capture event of logger registration (and potentially want to reconfigure this logger without changing default configuration) you can use `el::LoggerRegistrationCallback`. The syntax is similar to [other callbacks](#log-dispatch-callback). You can use [this sample](https://github.com/muflihun/easyloggingpp/blob/master/samples/STL/new-logger-registration-callback.cpp) as basis. +If you wish to capture event of logger registration (and potentially want to reconfigure this logger without changing default configuration) you can use `el::LoggerRegistrationCallback`. The syntax is similar to [other callbacks](#log-dispatch-callback). You can use [this sample](https://github.com/amrayn/easyloggingpp/blob/master/samples/STL/new-logger-registration-callback.cpp) as basis. > DO NOT LOG ANYTHING IN THIS HANDLER @@ -1365,12 +1377,12 @@ ### Asynchronous Logging Prerequisite: Define macro `ELPP_EXPERIMENTAL_ASYNC` -Asynchronous logging is in experimental stages and they are not widely promoted. You may enable and test this feature by defining macro `ELPP_EXPERIMENTAL_ASYNC` and if you find some issue with the feature please report in [this issue](https://github.com/muflihun/easyloggingpp/issues/202). Reporting issues always help for constant improvements. +Asynchronous logging is in experimental stages and they are not widely promoted. You may enable and test this feature by defining macro `ELPP_EXPERIMENTAL_ASYNC` and if you find some issue with the feature please report in [this issue](https://github.com/amrayn/easyloggingpp/issues/202). Reporting issues always help for constant improvements. Please note: * Asynchronous will only work with few compilers (it purely uses `std::thread`) * Compiler should support `std::this_thread::sleep_for`. This restriction may (or may not) be removed in future (stable) version of asynchronous logging. -* You should not rely on asynchronous logging in production, this is because feature is in experiemental stages. +* You should not rely on asynchronous logging in production, this is because feature is in experimental stages. [![top] Goto Top](#table-of-contents) @@ -1380,7 +1392,7 @@ * `el::Helpers` * `el::Loggers` -You can do various cool stuffs using functions in these classes, see [this issue](https://github.com/muflihun/easyloggingpp/issues/210) for instance. +You can do various cool stuffs using functions in these classes, see [this issue](https://github.com/amrayn/easyloggingpp/issues/210) for instance. [![top] Goto Top](#table-of-contents) @@ -1391,7 +1403,7 @@ [![top] Goto Top](#table-of-contents) ### Reporting a Bug -If you have found a bug and wish to report it, feel free to do so at [github issue tracker](https://github.com/muflihun/easyloggingpp/issues?state=open). I will try to look at it as soon as possible. Some information should be provided to make it easy to reproduce; +If you have found a bug and wish to report it, feel free to do so at [github issue tracker](https://github.com/amrayn/easyloggingpp/issues?state=open). I will try to look at it as soon as possible. Some information should be provided to make it easy to reproduce; * Platform (OS, Compiler) * Log file location * Macros defined (on compilation) OR simple compilation @@ -1403,7 +1415,7 @@ # Compatibility -Easylogging++ requires a decent C++0x complient compiler. Some compilers known to work with v9.0+ are shown in table below, for older versions please refer to readme on corresponding release at github +Easylogging++ requires a decent C++0x compliant compiler. Some compilers known to work with v9.0+ are shown in table below, for older versions please refer to readme on corresponding release at github | ***** | Compiler/Platform | Notes | |---------|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -1450,16 +1462,16 @@ | Branch | Platform | Build Status | | -------- |:------------:|:------------:| - | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `clang++` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-4.9` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-5` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-6` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-7` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `clang++` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-4.9` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-5` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-6` | [](https://travis-ci.org/muflihun/easyloggingpp) | - | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-7` | [](https://travis-ci.org/muflihun/easyloggingpp) | + | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `clang++` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-4.9` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-5` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-6` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `develop` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-7` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `clang++` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-4.9` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-5` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-6` | [](https://travis-ci.org/amrayn/easyloggingpp) | + | `master` | GNU/Linux 4.4 / Ubuntu 4.8.4 64-bit / `g++-7` | [](https://travis-ci.org/amrayn/easyloggingpp) | [![top] Goto Top](#table-of-contents) @@ -1467,11 +1479,11 @@ ``` The MIT License (MIT) -Copyright (c) 2012-2018 Zuhd Web Services +Copyright (c) 2012-2018 Amrayn Web Services Copyright (c) 2012-2018 @abumusamq -https://github.com/zuhd-org/ -https://zuhd.org +https://github.com/amrayn/ +https://amrayn.com https://muflihun.com Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -1502,38 +1514,38 @@ [![top] Goto Top](#table-of-contents) - [banner]: https://muflihun.github.io/easyloggingpp/images/banner.png?v=4 - [ubuntu]: https://muflihun.github.io/easyloggingpp/images/icons/ubuntu.png?v=2 - [mint]: https://muflihun.github.io/easyloggingpp/images/icons/linux-mint.png?v=2 - [freebsd]: https://muflihun.github.io/easyloggingpp/images/icons/free-bsd.png?v=2 - [sl]: https://muflihun.github.io/easyloggingpp/images/icons/scientific-linux.png?v=2 - [fedora]: https://muflihun.github.io/easyloggingpp/images/icons/fedora.png?v=3 - [mac]: https://muflihun.github.io/easyloggingpp/images/icons/mac-osx.png?v=2 - [winxp]: https://muflihun.github.io/easyloggingpp/images/icons/windowsxp.png?v=2 - [win7]: https://muflihun.github.io/easyloggingpp/images/icons/windows7.png?v=2 - [win8]: https://muflihun.github.io/easyloggingpp/images/icons/windows8.png?v=2 - [win10]: https://muflihun.github.io/easyloggingpp/images/icons/windows10.png?v=2 - [qt]: https://muflihun.github.io/easyloggingpp/images/icons/qt.png?v=3 - [boost]: https://muflihun.github.io/easyloggingpp/images/icons/boost.png?v=3 - [wxwidgets]: https://muflihun.github.io/easyloggingpp/images/icons/wxwidgets.png?v=3 - [devcpp]: https://muflihun.github.io/easyloggingpp/images/icons/devcpp.png?v=3 - [gtkmm]: https://muflihun.github.io/easyloggingpp/images/icons/gtkmm.png?v=3 - [tdm]: https://muflihun.github.io/easyloggingpp/images/icons/tdm.png?v=3 - [raspberrypi]: https://muflihun.github.io/easyloggingpp/images/icons/raspberry-pi.png?v=3 - [solaris]: https://muflihun.github.io/easyloggingpp/images/icons/solaris.png?v=3 - [aix]: https://muflihun.github.io/easyloggingpp/images/icons/aix.png?v=4 - - - [gcc]: https://muflihun.github.io/easyloggingpp/images/icons/gcc.png?v=4 - [mingw]: https://muflihun.github.io/easyloggingpp/images/icons/mingw.png?v=2 - [cygwin]: https://muflihun.github.io/easyloggingpp/images/icons/cygwin.png?v=2 - [vcpp]: https://muflihun.github.io/easyloggingpp/images/icons/vcpp.png?v=2 - [llvm]: https://muflihun.github.io/easyloggingpp/images/icons/llvm.png?v=2 - [intel]: https://muflihun.github.io/easyloggingpp/images/icons/intel.png?v=2 - [android]: https://muflihun.github.io/easyloggingpp/images/icons/android.png?v=2 - [manual]: https://muflihun.github.io/easyloggingpp/images/help.png?v=3 - [download]: https://muflihun.github.io/easyloggingpp/images/download.png?v=2 - [samples]: https://muflihun.github.io/easyloggingpp/images/sample.png?v=2 - [notes]: https://muflihun.github.io/easyloggingpp/images/notes.png?v=4 - [top]: https://muflihun.github.io/easyloggingpp/images/up.png?v=4 - [www]: https://muflihun.github.io/easyloggingpp/images/logo-www.png?v=6 + [banner]: https://amrayn.github.io/easyloggingpp/images/banner.png?v=4 + [ubuntu]: https://amrayn.github.io/easyloggingpp/images/icons/ubuntu.png?v=2 + [mint]: https://amrayn.github.io/easyloggingpp/images/icons/linux-mint.png?v=2 + [freebsd]: https://amrayn.github.io/easyloggingpp/images/icons/free-bsd.png?v=2 + [sl]: https://amrayn.github.io/easyloggingpp/images/icons/scientific-linux.png?v=2 + [fedora]: https://amrayn.github.io/easyloggingpp/images/icons/fedora.png?v=3 + [mac]: https://amrayn.github.io/easyloggingpp/images/icons/mac-osx.png?v=2 + [winxp]: https://amrayn.github.io/easyloggingpp/images/icons/windowsxp.png?v=2 + [win7]: https://amrayn.github.io/easyloggingpp/images/icons/windows7.png?v=2 + [win8]: https://amrayn.github.io/easyloggingpp/images/icons/windows8.png?v=2 + [win10]: https://amrayn.github.io/easyloggingpp/images/icons/windows10.png?v=2 + [qt]: https://amrayn.github.io/easyloggingpp/images/icons/qt.png?v=3 + [boost]: https://amrayn.github.io/easyloggingpp/images/icons/boost.png?v=3 + [wxwidgets]: https://amrayn.github.io/easyloggingpp/images/icons/wxwidgets.png?v=3 + [devcpp]: https://amrayn.github.io/easyloggingpp/images/icons/devcpp.png?v=3 + [gtkmm]: https://amrayn.github.io/easyloggingpp/images/icons/gtkmm.png?v=3 + [tdm]: https://amrayn.github.io/easyloggingpp/images/icons/tdm.png?v=3 + [raspberrypi]: https://amrayn.github.io/easyloggingpp/images/icons/raspberry-pi.png?v=3 + [solaris]: https://amrayn.github.io/easyloggingpp/images/icons/solaris.png?v=3 + [aix]: https://amrayn.github.io/easyloggingpp/images/icons/aix.png?v=4 + + + [gcc]: https://amrayn.github.io/easyloggingpp/images/icons/gcc.png?v=4 + [mingw]: https://amrayn.github.io/easyloggingpp/images/icons/mingw.png?v=2 + [cygwin]: https://amrayn.github.io/easyloggingpp/images/icons/cygwin.png?v=2 + [vcpp]: https://amrayn.github.io/easyloggingpp/images/icons/vcpp.png?v=2 + [llvm]: https://amrayn.github.io/easyloggingpp/images/icons/llvm.png?v=2 + [intel]: https://amrayn.github.io/easyloggingpp/images/icons/intel.png?v=2 + [android]: https://amrayn.github.io/easyloggingpp/images/icons/android.png?v=2 + [manual]: https://amrayn.github.io/easyloggingpp/images/help.png?v=3 + [download]: https://amrayn.github.io/easyloggingpp/images/download.png?v=2 + [samples]: https://amrayn.github.io/easyloggingpp/images/sample.png?v=2 + [notes]: https://amrayn.github.io/easyloggingpp/images/notes.png?v=4 + [top]: https://amrayn.github.io/easyloggingpp/images/up.png?v=4 + [www]: https://amrayn.github.io/easyloggingpp/images/logo-www.png?v=6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/cmake/FindEASYLOGGINGPP.cmake new/easyloggingpp-9.97.0/cmake/FindEASYLOGGINGPP.cmake --- old/easyloggingpp-9.96.7/cmake/FindEASYLOGGINGPP.cmake 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/cmake/FindEASYLOGGINGPP.cmake 2020-12-25 10:02:08.000000000 +0100 @@ -6,10 +6,10 @@ # If ${EASYLOGGINGPP_USE_STATIC_LIBS} is ON then static libs are searched. # In these cases ${EASYLOGGINGPP_LIBRARY} is also defined # -# (c) 2017-2018 Zuhd Web Services +# (c) 2017-2018 Amrayn Web Services # -# https://github.com/zuhd-org/easyloggingpp -# https://zuhd.org +# https://github.com/amrayn/easyloggingpp +# https://amrayn.com # https://muflihun.com # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.09 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.09 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.09 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.09 2020-12-25 10:02:08.000000000 +0100 @@ -18,7 +18,7 @@ = REFACTORING = ========================== - - Seperated writer from dispatcher + log class + - Separated writer from dispatcher + log class ========================== = NOTES = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.17 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.17 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.17 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.17 2020-12-25 10:02:08.000000000 +0100 @@ -12,7 +12,7 @@ = IMPROVEMENTS = ============================= - - Assertion failure and does not process when configuratoin file does not exist + - Assertion failure and does not process when configuration file does not exist ========================== = NOTES = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.18 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.18 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.18 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.18 2020-12-25 10:02:08.000000000 +0100 @@ -6,14 +6,14 @@ = FIXES = ========================== - - Completely dithced away QA logging even macros unusable + - Completely ditched away QA logging even macros unusable - Fixed some of verbose logging macro expansions ========================== = NEW FEATURES = ========================== - - Only allow aplha-numeric (+ some symbols) for logger names (issue #105) + - Only allow alpha-numeric (+ some symbols) for logger names (issue #105) - Case insensitive app args (issue #106) - Helper to reconfigure specific level for all loggers (issue #107) - DCHECK macros for debug mode checks (issue #108) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.21 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.21 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.21 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.21 2020-12-25 10:02:08.000000000 +0100 @@ -16,7 +16,7 @@ - Configuring same logger twice loses some information (issue #116) ========================== -= NEW FEATRUES = += NEW FEATURES = ========================== - Added base configurations pointer to `parseFromText` same as `parseFromFile` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.25 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.25 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.25 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.25 2020-12-25 10:02:08.000000000 +0100 @@ -14,7 +14,7 @@ ========================== - Default log file using command line args (issue #122) - - Introduced `LoggingFlag::ImmediateFlush` for performance imporvement (issue #127) + - Introduced `LoggingFlag::ImmediateFlush` for performance improvement (issue #127) - Introduced `ConfigurationType::LogFlushThreshold` to manually specify log flush threshold (issue #126) - Introduced `Logger::flush` family and `Loggers::flushAll` family of function to manually flush log files (issue #128) - Introduced command line arg to enable/disable logging flag using `--logging-flags` param (issue #129) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.60 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.60 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.60 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.60 2020-12-25 10:02:08.000000000 +0100 @@ -21,7 +21,7 @@ = BUG FIXES = ========================== - - Double free corrpution when sharing storage + - Double free corruption when sharing storage - Unused variable warning on Windows regarding "nextTok_" (issue #161) ========================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.92 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.92 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.92 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.92 2020-12-25 10:02:08.000000000 +0100 @@ -10,6 +10,6 @@ ========================== - Updated github repo - - See https://github.com/muflihun/easyloggingpp/blob/v9.92/README.md for manual for this release - - See https://github.com/muflihun/easyloggingpp/tree/master/doc for other release notes - - Closed issues: https://github.com/muflihun/easyloggingpp/issues?page=1&state=closed + - See https://github.com/amrayn/easyloggingpp/blob/v9.92/README.md for manual for this release + - See https://github.com/amrayn/easyloggingpp/tree/master/doc for other release notes + - Closed issues: https://github.com/amrayn/easyloggingpp/issues?page=1&state=closed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.93 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.93 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.93 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.93 2020-12-25 10:02:08.000000000 +0100 @@ -23,6 +23,6 @@ = NOTES = ========================== - - See https://github.com/muflihun/easyloggingpp/blob/9.93/README.md for manual for this release - - See https://github.com/muflihun/easyloggingpp/tree/master/doc for other release notes - - Closed issues: https://github.com/muflihun/easyloggingpp/issues?page=1&state=closed + - See https://github.com/amrayn/easyloggingpp/blob/9.93/README.md for manual for this release + - See https://github.com/amrayn/easyloggingpp/tree/master/doc for other release notes + - Closed issues: https://github.com/amrayn/easyloggingpp/issues?page=1&state=closed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.94 new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.94 --- old/easyloggingpp-9.96.7/doc/RELEASE-NOTES-v9.94 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/doc/RELEASE-NOTES-v9.94 2020-12-25 10:02:08.000000000 +0100 @@ -24,6 +24,6 @@ = NOTES = ========================== - - See https://github.com/muflihun/easyloggingpp/blob/9.93/README.md for manual for this release - - See https://github.com/muflihun/easyloggingpp/tree/master/doc for other release notes - - Closed issues: https://github.com/muflihun/easyloggingpp/issues?page=1&state=closed + - See https://github.com/amrayn/easyloggingpp/blob/9.93/README.md for manual for this release + - See https://github.com/amrayn/easyloggingpp/tree/master/doc for other release notes + - Closed issues: https://github.com/amrayn/easyloggingpp/issues?page=1&state=closed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/easyloggingpp.pri new/easyloggingpp-9.97.0/easyloggingpp.pri --- old/easyloggingpp-9.96.7/easyloggingpp.pri 1970-01-01 01:00:00.000000000 +0100 +++ new/easyloggingpp-9.97.0/easyloggingpp.pri 2020-12-25 10:02:08.000000000 +0100 @@ -0,0 +1,17 @@ +QT += core + +CONFIG += c++11 + +INCLUDEPATH += $$PWD/src + +DEFINES += ELPP_QT_LOGGING \ + ELPP_STL_LOGGING \ + ELPP_STRICT_SIZE_CHECK ELPP_UNICODE \ + ELPP_MULTI_LOGGER_SUPPORT \ + ELPP_THREAD_SAFE \ + ELPP_UNICODE \ + ELPP_NO_DEFAULT_LOG_FILE + +SOURCES += $$PWD/src/easylogging++.cc + +HEADERS += $$PWD/src/easylogging++.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/listwithsearch.cc new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/listwithsearch.cc --- old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/listwithsearch.cc 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/listwithsearch.cc 2020-12-25 10:02:08.000000000 +0100 @@ -89,7 +89,7 @@ } else { LOG(INFO) << "Performing search... [" << txtSearchCriteria->text().toStdString() << "]"; for (int i = items.count() - 1; i >= 0; --i) { - if (items.at(i)->text().startsWith(txtSearchCriteria->text(), searchBehaviour_ == kCaseSensative ? + if (items.at(i)->text().startsWith(txtSearchCriteria->text(), searchBehaviour_ == kCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive)) { list->insertItem(i, items.at(i)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/listwithsearch.hh new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/listwithsearch.hh --- old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/listwithsearch.hh 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/listwithsearch.hh 2020-12-25 10:02:08.000000000 +0100 @@ -19,9 +19,9 @@ public: static int kSearchBarHeight; - enum kBehaviour { kCaseInsensative, kCaseSensative }; + enum kBehaviour { kCaseInsensitive, kCaseSensitive }; - explicit ListWithSearch(int searchBehaviour_ = kCaseSensative, QWidget *parent = 0); + explicit ListWithSearch(int searchBehaviour_ = kCaseSensitive, QWidget *parent = 0); virtual ~ListWithSearch(); void add(const QString& item); void resizeEvent(QResizeEvent *); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/mainwindow.cc new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/mainwindow.cc --- old/easyloggingpp-9.96.7/samples/Qt/fast-dictionary/mainwindow.cc 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/Qt/fast-dictionary/mainwindow.cc 2020-12-25 10:02:08.000000000 +0100 @@ -34,7 +34,7 @@ { ui->setupUi(this); this->setWindowTitle("Fast Dictionary Sample - Easylogging++"); - list = new ListWithSearch(ListWithSearch::kCaseInsensative, this); + list = new ListWithSearch(ListWithSearch::kCaseInsensitive, this); this->setGeometry(0, 0, 800, 600); initializeDictionary("words.txt"); list->setFocus(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/Qt/file-splitter-joiner/about.ui new/easyloggingpp-9.97.0/samples/Qt/file-splitter-joiner/about.ui --- old/easyloggingpp-9.96.7/samples/Qt/file-splitter-joiner/about.ui 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/Qt/file-splitter-joiner/about.ui 2020-12-25 10:02:08.000000000 +0100 @@ -56,7 +56,7 @@ </rect> </property> <property name="text"> - <string><html><head/><body><p><a href="https://github.com/muflihun/easyloggingpp"><span style=" text-decoration: underline; color:#0000ff;">Github</span></a></p></body></html></string> + <string><html><head/><body><p><a href="https://github.com/amrayn/easyloggingpp"><span style=" text-decoration: underline; color:#0000ff;">Github</span></a></p></body></html></string> </property> </widget> <widget class="QLabel" name="label_3"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/Qt/file-splitter-joiner/partprocessor.cpp new/easyloggingpp-9.97.0/samples/Qt/file-splitter-joiner/partprocessor.cpp --- old/easyloggingpp-9.96.7/samples/Qt/file-splitter-joiner/partprocessor.cpp 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/Qt/file-splitter-joiner/partprocessor.cpp 2020-12-25 10:02:08.000000000 +0100 @@ -220,6 +220,6 @@ status = merge(); } if (status == -1) { - LOG(ERROR) << "Error occured while " << (processType == kSplit ? "splitting" : "merging"); + LOG(ERROR) << "Error occurred while " << (processType == kSplit ? "splitting" : "merging"); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/STL/crash.cpp new/easyloggingpp-9.97.0/samples/STL/crash.cpp --- old/easyloggingpp-9.96.7/samples/STL/crash.cpp 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/STL/crash.cpp 2020-12-25 10:02:08.000000000 +0100 @@ -1,7 +1,7 @@ // // This file is part of Easylogging++ samples // - // Demonstration on how crashes are handled. You can set second argument of this progam to `y` + // Demonstration on how crashes are handled. You can set second argument of this program to `y` // and application will not abort before crash is handled // // Revision 1.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/STL/occasional.cpp new/easyloggingpp-9.97.0/samples/STL/occasional.cpp --- old/easyloggingpp-9.96.7/samples/STL/occasional.cpp 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/STL/occasional.cpp 2020-12-25 10:02:08.000000000 +0100 @@ -1,6 +1,6 @@ // This file is part of Easylogging++ samples // - // Sample to demonstrate using occasionals and other hit counts based logging + // Sample to demonstrate using occasional and other hit count based logging // // Revision 1.2 // @author mkhan3189 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/samples/send-to-network/README.md new/easyloggingpp-9.97.0/samples/send-to-network/README.md --- old/easyloggingpp-9.96.7/samples/send-to-network/README.md 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/samples/send-to-network/README.md 2020-12-25 10:02:08.000000000 +0100 @@ -23,5 +23,5 @@ ## More -Please refer to [doc](https://github.com/muflihun/easyloggingpp#configuration-macros) for further details on macros +Please refer to [doc](https://github.com/amrayn/easyloggingpp#configuration-macros) for further details on macros diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/src/easylogging++.cc new/easyloggingpp-9.97.0/src/easylogging++.cc --- old/easyloggingpp-9.96.7/src/easylogging++.cc 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/src/easylogging++.cc 2020-12-25 10:02:08.000000000 +0100 @@ -4,13 +4,13 @@ // Easylogging++ v9.96.7 // Cross-platform logging library for C++ applications // -// Copyright (c) 2012-2018 Zuhd Web Services +// Copyright (c) 2012-2018 Amrayn Web Services // Copyright (c) 2012-2018 @abumusamq // // This library is released under the MIT Licence. -// https://github.com/zuhd-org/easyloggingpp/blob/master/LICENSE +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE // -// https://zuhd.org +// https://amrayn.com // http://muflihun.com // @@ -64,7 +64,7 @@ // Date/time static const char* kDays[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; static const char* kDaysAbbrev[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; -static const char* kMonths[12] = { "January", "February", "March", "Apri", "May", "June", "July", "August", +static const char* kMonths[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; static const char* kMonthsAbbrev[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; @@ -79,7 +79,7 @@ #if ELPP_VARIADIC_TEMPLATES_SUPPORTED #endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED static const base::type::VerboseLevel kMaxVerboseLevel = 9; -static const char* kUnknownUser = "user"; +static const char* kUnknownUser = "unknown-user"; static const char* kUnknownHost = "unknown-host"; @@ -292,7 +292,7 @@ } bool Configurations::parseFromFile(const std::string& configurationFile, Configurations* base) { - // We initial assertion with true because if we have assertion diabled, we want to pass this + // We initial assertion with true because if we have assertion disabled, we want to pass this // check and if assertion is enabled we will have values re-assigned any way. bool assertionPassed = true; ELPP_ASSERT((assertionPassed = base::utils::File::pathExists(configurationFile.c_str(), true)) == true, @@ -599,7 +599,7 @@ // Logger -Logger::Logger(const std::string& id, base::LogStreamsReferenceMap* logStreamsReference) : +Logger::Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference) : m_id(id), m_typedConfigurations(nullptr), m_parentApplicationName(std::string()), @@ -609,7 +609,7 @@ } Logger::Logger(const std::string& id, const Configurations& configurations, - base::LogStreamsReferenceMap* logStreamsReference) : + base::LogStreamsReferenceMapPtr logStreamsReference) : m_id(id), m_typedConfigurations(nullptr), m_parentApplicationName(std::string()), @@ -794,22 +794,22 @@ if (path[0] == '/') { builtPath = "/"; } - currPath = STRTOK(currPath, base::consts::kFilePathSeperator, 0); + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, 0); #elif ELPP_OS_WINDOWS // Use secure functions API char* nextTok_ = nullptr; - currPath = STRTOK(currPath, base::consts::kFilePathSeperator, &nextTok_); + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, &nextTok_); ELPP_UNUSED(nextTok_); #endif // ELPP_OS_UNIX while (currPath != nullptr) { builtPath.append(currPath); - builtPath.append(base::consts::kFilePathSeperator); + builtPath.append(base::consts::kFilePathSeparator); #if ELPP_OS_UNIX status = mkdir(builtPath.c_str(), ELPP_LOG_PERMS); - currPath = STRTOK(nullptr, base::consts::kFilePathSeperator, 0); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, 0); #elif ELPP_OS_WINDOWS status = _mkdir(builtPath.c_str()); - currPath = STRTOK(nullptr, base::consts::kFilePathSeperator, &nextTok_); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, &nextTok_); #endif // ELPP_OS_UNIX } if (status == -1) { @@ -1013,7 +1013,7 @@ return buff; } -/// @brief Converst wchar* to char* +/// @brief Converts wchar* to char* /// NOTE: Need to free return value after use! char* Str::wcharPtrToCharPtr(const wchar_t* line) { std::size_t len_ = wcslen(line) + 1; @@ -1524,7 +1524,7 @@ // For date/time we need to extract user's date format first std::size_t dateIndex = std::string::npos; if ((dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier)) != std::string::npos) { - while (dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + while (dateIndex != std::string::npos && dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier, dateIndex + 1); } if (dateIndex != std::string::npos) { @@ -1615,7 +1615,7 @@ // TypedConfigurations TypedConfigurations::TypedConfigurations(Configurations* configurations, - base::LogStreamsReferenceMap* logStreamsReference) { + LogStreamsReferenceMapPtr logStreamsReference) { m_configurations = configurations; m_logStreamsReference = logStreamsReference; build(m_configurations); @@ -1691,7 +1691,7 @@ // We do not yet configure filename but we will configure in another // loop. This is because if file cannot be created, we will force ToFile // to be false. Because configuring logger is not necessarily performance - // sensative operation, we can live with another loop; (by the way this loop + // sensitive operation, we can live with another loop; (by the way this loop // is not very heavy either) } else if (conf->configurationType() == ConfigurationType::Format) { setValue(conf->level(), base::LogFormat(conf->level(), @@ -1785,7 +1785,7 @@ std::cerr << "Could not load empty file for logging, please re-check your configurations for level [" << LevelHelper::convertToString(level) << "]"; } - std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeperator); + std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeparator); if (filePath.size() < resolvedFilename.size()) { base::utils::File::createPath(filePath); } @@ -1885,6 +1885,7 @@ RegisteredLoggers::RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder) : m_defaultLogBuilder(defaultLogBuilder) { m_defaultConfigurations.setToDefault(); + m_logStreamsReference = std::make_shared<base::LogStreamsReferenceMap>(); } Logger* RegisteredLoggers::get(const std::string& id, bool forceCreation) { @@ -1896,7 +1897,7 @@ ELPP_ASSERT(validId, "Invalid logger ID [" << id << "]. Not registering this logger."); return nullptr; } - logger_ = new Logger(id, m_defaultConfigurations, &m_logStreamsReference); + logger_ = new Logger(id, m_defaultConfigurations, m_logStreamsReference); logger_->m_logBuilder = m_defaultLogBuilder; registerNew(id, logger_); LoggerRegistrationCallback* callback = nullptr; @@ -1926,8 +1927,8 @@ void RegisteredLoggers::unsafeFlushAll(void) { ELPP_INTERNAL_INFO(1, "Flushing all log files"); - for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference.begin(); - it != m_logStreamsReference.end(); ++it) { + for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference->begin(); + it != m_logStreamsReference->end(); ++it) { if (it->second.get() == nullptr) continue; it->second->flush(); } @@ -2184,16 +2185,18 @@ } // namespace base // LogDispatchCallback -void LogDispatchCallback::handle(const LogDispatchData* data) { #if defined(ELPP_THREAD_SAFE) +void LogDispatchCallback::handle(const LogDispatchData* data) { base::threading::ScopedLock scopedLock(m_fileLocksMapLock); std::string filename = data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level()); auto lock = m_fileLocks.find(filename); if (lock == m_fileLocks.end()) { m_fileLocks.emplace(std::make_pair(filename, std::unique_ptr<base::threading::Mutex>(new base::threading::Mutex))); } -#endif } +#else +void LogDispatchCallback::handle(const LogDispatchData* /*data*/) {} +#endif base::threading::Mutex& LogDispatchCallback::fileHandle(const LogDispatchData* data) { auto it = m_fileLocks.find(data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level())); @@ -2480,7 +2483,7 @@ } #ifndef ELPP_NO_GLOBAL_LOCK // see https://github.com/muflihun/easyloggingpp/issues/580 - // global lock is turned off by default unless + // global lock is turned on by default unless // ELPP_NO_GLOBAL_LOCK is defined base::threading::ScopedLock scopedLock(ELPP->lock()); #endif @@ -2505,7 +2508,7 @@ void MessageBuilder::initialize(Logger* logger) { m_logger = logger; - m_containerLogSeperator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? + m_containerLogSeparator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? ELPP_LITERAL("\n ") : ELPP_LITERAL(", "); } @@ -2625,30 +2628,35 @@ } void Writer::triggerDispatch(void) { - if (m_proceed) { - if (m_msg == nullptr) { - LogMessage msg(m_level, m_file, m_line, m_func, m_verboseLevel, - m_logger); - base::LogDispatcher(m_proceed, &msg, m_dispatchAction).dispatch(); - } else { - base::LogDispatcher(m_proceed, m_msg, m_dispatchAction).dispatch(); - } - } - if (m_logger != nullptr) { - m_logger->stream().str(ELPP_LITERAL("")); - m_logger->releaseLock(); - } - if (m_proceed && m_level == Level::Fatal - && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { - base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) - << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; - std::stringstream reasonStream; - reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" - << " If you wish to disable 'abort on fatal log' please use " - << "el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; - base::utils::abort(1, reasonStream.str()); - } - m_proceed = false; + try { + if (m_proceed) { + if (m_msg == nullptr) { + LogMessage msg(m_level, m_file, m_line, m_func, m_verboseLevel, + m_logger); + base::LogDispatcher(m_proceed, &msg, m_dispatchAction).dispatch(); + } else { + base::LogDispatcher(m_proceed, m_msg, m_dispatchAction).dispatch(); + } + } + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (m_proceed && m_level == Level::Fatal + && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { + base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; + std::stringstream reasonStream; + reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" + << " If you wish to disable 'abort on fatal log' please use " + << "el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; + base::utils::abort(1, reasonStream.str()); + } + m_proceed = false; + } + catch(std::exception & ex){ + // Extremely low memory situation; don't let exception be unhandled. + } } // PErrorWriter @@ -2677,7 +2685,7 @@ m_level(level), m_hasChecked(false), m_lastCheckpointId(std::string()), m_enabled(false) { #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED // We store it locally so that if user happen to change configuration by the end of scope - // or before calling checkpoint, we still depend on state of configuraton at time of construction + // or before calling checkpoint, we still depend on state of configuration at time of construction el::Logger* loggerPtr = ELPP->registeredLoggers()->get(loggerId, false); m_enabled = loggerPtr != nullptr && loggerPtr->m_typedConfigurations->performanceTracking(m_level); if (m_enabled) { @@ -2786,7 +2794,7 @@ } void StackTrace::generateNew(void) { -#if ELPP_STACKTRACE +#ifdef HAVE_EXECINFO m_stack.clear(); void* stack[kMaxStack]; unsigned int size = backtrace(stack, kMaxStack); @@ -3005,7 +3013,7 @@ return ELPP->registeredLoggers()->defaultConfigurations(); } -const base::LogStreamsReferenceMap* Loggers::logStreamsReference(void) { +const base::LogStreamsReferenceMapPtr Loggers::logStreamsReference(void) { return ELPP->registeredLoggers()->logStreamsReference(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/src/easylogging++.h new/easyloggingpp-9.97.0/src/easylogging++.h --- old/easyloggingpp-9.96.7/src/easylogging++.h 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/src/easylogging++.h 2020-12-25 10:02:08.000000000 +0100 @@ -4,13 +4,13 @@ // Easylogging++ v9.96.7 // Single-header only, cross-platform logging library for C++ applications // -// Copyright (c) 2012-2018 Zuhd Web Services +// Copyright (c) 2012-2018 Amrayn Web Services // Copyright (c) 2012-2018 @abumusamq // // This library is released under the MIT Licence. -// https://github.com/zuhd-org/easyloggingpp/blob/master/LICENSE +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE // -// https://zuhd.org +// https://amrayn.com // http://muflihun.com // @@ -119,8 +119,13 @@ #else # define ELPP_OS_EMSCRIPTEN 0 #endif +#if (defined(__QNX__) || defined(__QNXNTO__)) +# define ELPP_OS_QNX 1 +#else +# define ELPP_OS_QNX 0 +#endif // Unix -#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_NETBSD || ELPP_OS_SOLARIS || ELPP_OS_AIX || ELPP_OS_EMSCRIPTEN) && (!ELPP_OS_WINDOWS)) +#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_NETBSD || ELPP_OS_SOLARIS || ELPP_OS_AIX || ELPP_OS_EMSCRIPTEN || ELPP_OS_QNX) && (!ELPP_OS_WINDOWS)) # define ELPP_OS_UNIX 1 #else # define ELPP_OS_UNIX 0 @@ -205,7 +210,7 @@ # define ELPP_INTERNAL_INFO(lvl, msg) #endif // (defined(ELPP_DEBUG_INFO)) #if (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) -# if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_OS_ANDROID && !ELPP_OS_EMSCRIPTEN) +# if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_CYGWIN && !ELPP_OS_ANDROID && !ELPP_OS_EMSCRIPTEN && !ELPP_OS_QNX) # define ELPP_STACKTRACE 1 # else # if ELPP_COMPILER_MSVC @@ -360,10 +365,10 @@ # include <codecvt> # endif // ELPP_OS_WINDOWS #endif // defined(ELPP_UNICODE) -#if ELPP_STACKTRACE +#ifdef HAVE_EXECINFO # include <cxxabi.h> # include <execinfo.h> -#endif // ELPP_STACKTRACE +#endif // ENABLE_EXECINFO #if ELPP_OS_ANDROID # include <sys/system_properties.h> #endif // ELPP_OS_ANDROID @@ -580,7 +585,7 @@ Fatal = 8, /// @brief Information representing errors in application but application will keep running Error = 16, - /// @brief Useful when application has potentially harmful situtaions + /// @brief Useful when application has potentially harmful situations Warning = 32, /// @brief Information that can be highly useful and vary with verbose logging level. Verbose = 64, @@ -640,7 +645,7 @@ ToStandardOutput = 4, /// @brief Determines format of logging corresponding level and logger. Format = 8, - /// @brief Determines log file (full path) to write logs to for correponding level and logger + /// @brief Determines log file (full path) to write logs to for corresponding level and logger Filename = 16, /// @brief Specifies precision of the subsecond part. It should be within range (1-6). SubsecondPrecision = 32, @@ -671,7 +676,7 @@ static base::type::EnumType castToInt(ConfigurationType configurationType) { return static_cast<base::type::EnumType>(configurationType); } - /// @brief Casts int(ushort) to configurationt type, useful for iterating through enum. + /// @brief Casts int(ushort) to configuration type, useful for iterating through enum. static ConfigurationType castFromInt(base::type::EnumType c) { return static_cast<ConfigurationType>(c); } @@ -700,7 +705,7 @@ LogDetailedCrashReason = 4, /// @brief Allows to disable application abortion when logged using FATAL level DisableApplicationAbortOnFatalLog = 8, - /// @brief Flushes log with every log-entry (performance sensative) - Disabled by default + /// @brief Flushes log with every log-entry (performance sensitive) - Disabled by default ImmediateFlush = 16, /// @brief Enables strict file rolling StrictLogFileSizeCheck = 32, @@ -753,9 +758,9 @@ #endif // defined(ELPP_SYSLOG) #if ELPP_OS_WINDOWS -static const char* kFilePathSeperator = "\\"; +static const char* kFilePathSeparator = "\\"; #else -static const char* kFilePathSeperator = "/"; +static const char* kFilePathSeparator = "/"; #endif // ELPP_OS_WINDOWS static const std::size_t kSourceFilenameMaxLength = 100; @@ -786,7 +791,7 @@ }, { SIGFPE, "SIGFPE", "Erroneous arithmetic operation", - "Arithemetic operation issue such as division by zero or operation resulting in overflow." + "Arithmetic operation issue such as division by zero or operation resulting in overflow." }, { SIGILL, "SIGILL", "Illegal instruction", @@ -1052,14 +1057,14 @@ static bool createPath(const std::string& path); /// @brief Extracts path of filename with leading slash static std::string extractPathFromFilename(const std::string& fullPath, - const char* seperator = base::consts::kFilePathSeperator); + const char* separator = base::consts::kFilePathSeparator); /// @brief builds stripped filename and puts it in buff static void buildStrippedFilename(const char* filename, char buff[], std::size_t limit = base::consts::kSourceFilenameMaxLength); /// @brief builds base filename and puts it in buff static void buildBaseFilename(const std::string& fullPath, char buff[], std::size_t limit = base::consts::kSourceFilenameMaxLength, - const char* seperator = base::consts::kFilePathSeperator); + const char* separator = base::consts::kFilePathSeparator); }; /// @brief String utilities helper class used internally. You should not use it. class Str : base::StaticClass { @@ -1128,7 +1133,7 @@ static char* addToBuff(const char* str, char* buf, const char* bufLim); static char* clearBuff(char buff[], std::size_t lim); - /// @brief Converst wchar* to char* + /// @brief Converts wchar* to char* /// NOTE: Need to free return value after use! static char* wcharPtrToCharPtr(const wchar_t* line); }; @@ -1169,7 +1174,7 @@ /// @brief Gets current host name or computer name. /// - /// @detail For android systems this is device name with its manufacturer and model seperated by hyphen + /// @detail For android systems this is device name with its manufacturer and model separated by hyphen static std::string currentHost(void); /// @brief Whether or not terminal supports colors static bool termSupportsColor(void); @@ -1179,7 +1184,7 @@ public: /// @brief Cross platform gettimeofday for Windows and unix platform. This can be used to determine current microsecond. /// - /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a seperate implementation is provided + /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a separate implementation is provided /// @param [in,out] tv Pointer that gets updated static void gettimeofday(struct timeval* tv); @@ -1225,7 +1230,7 @@ } /// @brief Sets arguments and parses them void setArgs(int argc, char** argv); - /// @brief Returns true if arguments contain paramKey with a value (seperated by '=') + /// @brief Returns true if arguments contain paramKey with a value (separated by '=') bool hasParamWithValue(const char* paramKey) const; /// @brief Returns value of arguments /// @see hasParamWithValue(const char*) @@ -1381,7 +1386,7 @@ this->reinitDeepCopy(sr); } - /// @brief Assignment operator that unregisters all the existing registeries and deeply copies each of repo element + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element /// @see unregisterAll() /// @see deepCopy(const AbstractRegistry&) Registry& operator=(const Registry& sr) { @@ -1462,7 +1467,7 @@ this->reinitDeepCopy(sr); } - /// @brief Assignment operator that unregisters all the existing registeries and deeply copies each of repo element + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element /// @see unregisterAll() /// @see deepCopy(const AbstractRegistry&) RegistryWithPred& operator=(const RegistryWithPred& sr) { @@ -1509,7 +1514,7 @@ this->list().push_back(ptr); } -/// @brief Gets pointer from repository with speicifed arguments. Arguments are passed to predicate +/// @brief Gets pointer from repository with specified arguments. Arguments are passed to predicate /// in order to validate pointer. template <typename T, typename T2> T_Ptr* get(const T& arg1, const T2 arg2) { @@ -1893,6 +1898,7 @@ namespace base { typedef std::shared_ptr<base::type::fstream_t> FileStreamPtr; typedef std::unordered_map<std::string, FileStreamPtr> LogStreamsReferenceMap; +typedef std::shared_ptr<base::LogStreamsReferenceMap> LogStreamsReferenceMapPtr; /// @brief Configurations with data types. /// /// @detail el::Configurations have string based values. This is whats used internally in order to read correct configurations. @@ -1904,7 +1910,7 @@ /// @brief Constructor to initialize (construct) the object off el::Configurations /// @param configurations Configurations pointer/reference to base this typed configurations off. /// @param logStreamsReference Use ELPP->registeredLoggers()->logStreamsReference() - TypedConfigurations(Configurations* configurations, base::LogStreamsReferenceMap* logStreamsReference); + TypedConfigurations(Configurations* configurations, LogStreamsReferenceMapPtr logStreamsReference); TypedConfigurations(const TypedConfigurations& other); @@ -1939,7 +1945,7 @@ std::unordered_map<Level, base::FileStreamPtr> m_fileStreamMap; std::unordered_map<Level, std::size_t> m_maxLogFileSizeMap; std::unordered_map<Level, std::size_t> m_logFlushThresholdMap; - base::LogStreamsReferenceMap* m_logStreamsReference; + LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; friend class el::Helpers; friend class el::base::MessageBuilder; @@ -2207,11 +2213,11 @@ typedef std::shared_ptr<LogBuilder> LogBuilderPtr; /// @brief Represents a logger holding ID and configurations we need to write logs /// -/// @detail This class does not write logs itself instead its used by writer to read configuations from. +/// @detail This class does not write logs itself instead its used by writer to read configurations from. class Logger : public base::threading::ThreadSafe, public Loggable { public: - Logger(const std::string& id, base::LogStreamsReferenceMap* logStreamsReference); - Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMap* logStreamsReference); + Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference); + Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMapPtr logStreamsReference); Logger(const Logger& logger); Logger& operator=(const Logger& logger); @@ -2301,7 +2307,7 @@ bool m_isConfigured; Configurations m_configurations; std::unordered_map<Level, unsigned int> m_unflushedCount; - base::LogStreamsReferenceMap* m_logStreamsReference; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; LogBuilderPtr m_logBuilder; friend class el::LogMessage; @@ -2388,8 +2394,8 @@ base::utils::Registry<Logger, std::string>::unregister(logger->id()); } - inline base::LogStreamsReferenceMap* logStreamsReference(void) { - return &m_logStreamsReference; + inline LogStreamsReferenceMapPtr logStreamsReference(void) { + return m_logStreamsReference; } inline void flushAll(void) { @@ -2405,7 +2411,7 @@ private: LogBuilderPtr m_defaultLogBuilder; Configurations m_defaultConfigurations; - base::LogStreamsReferenceMap m_logStreamsReference; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; std::unordered_map<std::string, base::type::LoggerRegistrationCallbackPtr> m_loggerRegistrationCallbacks; friend class el::base::Storage; @@ -2859,7 +2865,7 @@ // Log message builder class MessageBuilder { public: - MessageBuilder(void) : m_logger(nullptr), m_containerLogSeperator(ELPP_LITERAL("")) {} + MessageBuilder(void) : m_logger(nullptr), m_containerLogSeparator(ELPP_LITERAL("")) {} void initialize(Logger* logger); # define ELPP_SIMPLE_LOG(LOG_TYPE)\ @@ -3047,7 +3053,7 @@ m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast<V>(map_.value(*begin))); m_logger->stream() << ELPP_LITERAL(")"); - m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeperator : ELPP_LITERAL("")); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin != end) { m_logger->stream() << ELPP_LITERAL("..."); @@ -3073,7 +3079,7 @@ m_logger->stream() << ELPP_LITERAL(", "); operator << (static_cast<V>(hash_.value(*begin))); m_logger->stream() << ELPP_LITERAL(")"); - m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeperator : ELPP_LITERAL("")); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin != end) { m_logger->stream() << ELPP_LITERAL("..."); @@ -3104,7 +3110,7 @@ /// have begin() and end() methods that return respective iterators /// @param ContainerType Type of container e.g, MyList from WX_DECLARE_LIST(int, MyList); in wxwidgets /// @param SizeMethod Method used to get size of container. - /// @param ElementInstance Instance of element to be fed out. Insance name is "elem". See WXELPP_ENABLED macro + /// @param ElementInstance Instance of element to be fed out. Instance name is "elem". See WXELPP_ENABLED macro /// for an example usage #define MAKE_CONTAINERELPP_FRIENDLY(ContainerType, SizeMethod, ElementInstance) \ el::base::type::ostream_t& operator<<(el::base::type::ostream_t& ss, const ContainerType& container) {\ @@ -3146,14 +3152,14 @@ #undef ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG private: Logger* m_logger; - const base::type::char_t* m_containerLogSeperator; + const base::type::char_t* m_containerLogSeparator; template<class Iterator> MessageBuilder& writeIterator(Iterator begin_, Iterator end_, std::size_t size_) { m_logger->stream() << ELPP_LITERAL("["); for (std::size_t i = 0; begin_ != end_ && i < base::consts::kMaxLogPerContainer; ++i, ++begin_) { operator << (*begin_); - m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeperator : ELPP_LITERAL("")); + m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeparator : ELPP_LITERAL("")); } if (begin_ != end_) { m_logger->stream() << ELPP_LITERAL("..."); @@ -3632,6 +3638,7 @@ public: SysLogInitializer(const char* processIdent, int options = 0, int facility = 0) { #if defined(ELPP_SYSLOG) + (void)base::consts::kSysLogLoggerId; openlog(processIdent, options, facility); #else ELPP_UNUSED(processIdent); @@ -3824,7 +3831,7 @@ /// @brief Returns current default static const Configurations* defaultConfigurations(void); /// @brief Returns log stream reference pointer if needed by user - static const base::LogStreamsReferenceMap* logStreamsReference(void); + static const base::LogStreamsReferenceMapPtr logStreamsReference(void); /// @brief Default typed configuration based on existing defaultConf static base::TypedConfigurations defaultTypedConfigurations(void); /// @brief Populates all logger IDs in current repository. @@ -3835,7 +3842,7 @@ /// @brief Configures loggers using command line arg. Ensure you have already set command line args, /// @return False if invalid argument or argument with no value provided, true if attempted to configure logger. /// If true is returned that does not mean it has been configured successfully, it only means that it - /// has attempeted to configure logger using configuration file provided in argument + /// has attempted to configure logger using configuration file provided in argument static bool configureFromArg(const char* argKey); /// @brief Flushes all loggers for all levels - Be careful if you dont know how many loggers are registered static void flushAll(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/test/format-specifier-test.h new/easyloggingpp-9.97.0/test/format-specifier-test.h --- old/easyloggingpp-9.96.7/test/format-specifier-test.h 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/test/format-specifier-test.h 2020-12-25 10:02:08.000000000 +0100 @@ -22,7 +22,7 @@ el::Helpers::setArgs(2, param); - // Regression origional %level still correct + // Regression original %level still correct Configurations c; c.setGlobally(el::ConfigurationType::Format, "%level %msg"); c.set(el::Level::Verbose, el::ConfigurationType::Format, "%level-%vlevel %msg"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/easyloggingpp-9.96.7/tools/cpplint.py new/easyloggingpp-9.97.0/tools/cpplint.py --- old/easyloggingpp-9.96.7/tools/cpplint.py 2018-11-23 21:35:32.000000000 +0100 +++ new/easyloggingpp-9.97.0/tools/cpplint.py 2020-12-25 10:02:08.000000000 +0100 @@ -113,7 +113,7 @@ ignored. Examples: - Assuing that src/.git exists, the header guard CPP variables for + Assuming that src/.git exists, the header guard CPP variables for src/chrome/browser/ui/browser.h are: No flag => CHROME_BROWSER_UI_BROWSER_H_ @@ -196,7 +196,7 @@ 'whitespace/todo' ] -# The default state of the category filter. This is overrided by the --filter= +# The default state of the category filter. This is overridden by the --filter= # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). # All entries here should start with a '-' or '+', as in the --filter= flag. @@ -4076,7 +4076,7 @@ # inside declarators: reference parameter # We will exclude the first two cases by checking that we are not inside a # function body, including one that was just introduced by a trailing '{'. - # TODO(unknwon): Doesn't account for preprocessor directives. + # TODO(unknown): Doesn't account for preprocessor directives. # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. check_params = False if not nesting_state.stack: