mirror of
https://github.com/vgough/encfs.git
synced 2025-02-22 20:51:18 +01:00
Update "easyloggingpp" from "https://github.com/muflihun/easyloggingpp@v9.97.0"
git-vendor-name: easyloggingpp git-vendor-dir: vendor/github.com/muflihun/easyloggingpp git-vendor-repository: https://github.com/muflihun/easyloggingpp git-vendor-ref: v9.97.0
This commit is contained in:
commit
9d616480c9
1
vendor/github.com/muflihun/easyloggingpp/.github/FUNDING.yml
generated
vendored
Normal file
1
vendor/github.com/muflihun/easyloggingpp/.github/FUNDING.yml
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
custom: https://amrayn.com/donate,https://www.paypal.me/mkhan3189
|
14
vendor/github.com/muflihun/easyloggingpp/ACKNOWLEDGEMENTS.md
generated
vendored
14
vendor/github.com/muflihun/easyloggingpp/ACKNOWLEDGEMENTS.md
generated
vendored
@ -5,11 +5,11 @@ If we have missed your name please feel free to add it with contribution link.
|
||||
|
||||
| **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 |
|
||||
|
14
vendor/github.com/muflihun/easyloggingpp/CHANGELOG.md
generated
vendored
14
vendor/github.com/muflihun/easyloggingpp/CHANGELOG.md
generated
vendored
@ -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)
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/CMakeLists.txt
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/CMakeLists.txt
generated
vendored
@ -46,6 +46,12 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/easyloggingpp.pc.cmakein
|
||||
|
||||
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)
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/LICENSE
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/LICENSE
generated
vendored
@ -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
|
||||
|
164
vendor/github.com/muflihun/easyloggingpp/README.md
generated
vendored
164
vendor/github.com/muflihun/easyloggingpp/README.md
generated
vendored
@ -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 @@ Easylogging++ is feature-rich containing many features that both typical and adv
|
||||
|
||||
# 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 @@ Now compile using
|
||||
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 @@ Following options are supported by Easylogging++ cmake and you can turn these op
|
||||
* `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 @@ Please note, date/time is limited to `30` characters at most.
|
||||
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 @@ Form some parts of logging you can set logging flags; here are flags supported:
|
||||
|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `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 @@ Form some parts of logging you can set logging flags; here are flags supported:
|
||||
| `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 @@ Some of logging options can be set by macros, this is a thoughtful decision, for
|
||||
|
||||
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 @@ Some of logging options can be set by macros, this is a thoughtful decision, for
|
||||
| `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 @@ Some of logging options can be set by macros, this is a thoughtful decision, for
|
||||
| `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 @@ Notes:
|
||||
|
||||
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 @@ You may also have a look at wxWidgets sample
|
||||
### 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 @@ int main() {
|
||||
[![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 @@ If you wish to capture event of logger registration (and potentially want to rec
|
||||
### 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 @@ There are static helper classes available to make it easy to do stuffs;
|
||||
* `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 @@ You can submit patches to `develop` branch and we will try and merge them. Since
|
||||
[![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 @@ Try to provide as much information as possible. Any bug with no clear informatio
|
||||
|
||||
# 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 @@ Easylogging++ has also been tested with following C++ libraries;
|
||||
|
||||
| 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 @@ Easylogging++ has also been tested with following C++ libraries;
|
||||
```
|
||||
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 @@ Icons used in this manual (in compatibility section) are solely for information
|
||||
|
||||
[![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
|
||||
[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://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
|
||||
[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
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/cmake/FindEASYLOGGINGPP.cmake
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/cmake/FindEASYLOGGINGPP.cmake
generated
vendored
@ -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
|
||||
#
|
||||
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.09
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.09
generated
vendored
@ -18,7 +18,7 @@ Easylogging++ v9.09 RELEASE NOTES
|
||||
= REFACTORING =
|
||||
==========================
|
||||
|
||||
- Seperated writer from dispatcher + log class
|
||||
- Separated writer from dispatcher + log class
|
||||
|
||||
==========================
|
||||
= NOTES =
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.17
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.17
generated
vendored
@ -12,7 +12,7 @@ Easylogging++ v9.17 RELEASE NOTES
|
||||
= 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 =
|
||||
|
4
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.18
generated
vendored
4
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.18
generated
vendored
@ -6,14 +6,14 @@ Easylogging++ v9.18 RELEASE NOTES
|
||||
= 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)
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.21
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.21
generated
vendored
@ -16,7 +16,7 @@ Easylogging++ v9.21 RELEASE NOTES
|
||||
- Configuring same logger twice loses some information (issue #116)
|
||||
|
||||
==========================
|
||||
= NEW FEATRUES =
|
||||
= NEW FEATURES =
|
||||
==========================
|
||||
|
||||
- Added base configurations pointer to `parseFromText` same as `parseFromFile`
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.25
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.25
generated
vendored
@ -14,7 +14,7 @@ Easylogging++ v9.25 RELEASE NOTES
|
||||
==========================
|
||||
|
||||
- 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)
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.60
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.60
generated
vendored
@ -21,7 +21,7 @@ API changes: No
|
||||
= BUG FIXES =
|
||||
==========================
|
||||
|
||||
- Double free corrpution when sharing storage
|
||||
- Double free corruption when sharing storage
|
||||
- Unused variable warning on Windows regarding "nextTok_" (issue #161)
|
||||
|
||||
==========================
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.92
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.92
generated
vendored
@ -10,6 +10,6 @@ Breaking Change: No
|
||||
==========================
|
||||
|
||||
- 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
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.93
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.93
generated
vendored
@ -23,6 +23,6 @@ Breaking Change: No
|
||||
= 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
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.94
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/doc/RELEASE-NOTES-v9.94
generated
vendored
@ -24,6 +24,6 @@ Breaking Change: No
|
||||
= 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
|
||||
|
17
vendor/github.com/muflihun/easyloggingpp/easyloggingpp.pri
generated
vendored
Normal file
17
vendor/github.com/muflihun/easyloggingpp/easyloggingpp.pri
generated
vendored
Normal file
@ -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
|
@ -89,7 +89,7 @@ void ListWithSearch::performSearch(void)
|
||||
} 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));
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ class ListWithSearch : public QWidget
|
||||
|
||||
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 *);
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/samples/Qt/fast-dictionary/mainwindow.cc
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/samples/Qt/fast-dictionary/mainwindow.cc
generated
vendored
@ -34,7 +34,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
{
|
||||
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();
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/samples/Qt/file-splitter-joiner/about.ui
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/samples/Qt/file-splitter-joiner/about.ui
generated
vendored
@ -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">
|
||||
|
@ -220,6 +220,6 @@ void PartProcessor::run(void) {
|
||||
status = merge();
|
||||
}
|
||||
if (status == -1) {
|
||||
LOG(ERROR) << "Error occured while " << (processType == kSplit ? "splitting" : "merging");
|
||||
LOG(ERROR) << "Error occurred while " << (processType == kSplit ? "splitting" : "merging");
|
||||
}
|
||||
}
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/samples/STL/crash.cpp
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/samples/STL/crash.cpp
generated
vendored
@ -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
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/samples/STL/occasional.cpp
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/samples/STL/occasional.cpp
generated
vendored
@ -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
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/samples/send-to-network/README.md
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/samples/send-to-network/README.md
generated
vendored
@ -23,5 +23,5 @@ Now run `./bin/network-logger`
|
||||
|
||||
## 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
|
||||
|
||||
|
112
vendor/github.com/muflihun/easyloggingpp/src/easylogging++.cc
generated
vendored
112
vendor/github.com/muflihun/easyloggingpp/src/easylogging++.cc
generated
vendored
@ -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 @@ static const char* kDateTimeFormatSpecifierForFilename = "%datet
|
||||
// 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 @@ static const char* kNullPointer = "nullptr";
|
||||
#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 @@ Configurations::Configurations(const std::string& configurationFile, bool useDef
|
||||
}
|
||||
|
||||
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 @@ void LogBuilder::convertToColoredOutput(base::type::string_t* logLine, Level lev
|
||||
|
||||
// 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, base::LogStreamsReferenceMap* logStreamsRe
|
||||
}
|
||||
|
||||
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 @@ bool File::createPath(const std::string& path) {
|
||||
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 @@ char* Str::clearBuff(char buff[], std::size_t lim) {
|
||||
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 @@ void LogFormat::parseFromFormat(const base::type::string_t& userFormat) {
|
||||
// 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 @@ void LogFormat::updateFormatSpec(void) {
|
||||
// TypedConfigurations
|
||||
|
||||
TypedConfigurations::TypedConfigurations(Configurations* configurations,
|
||||
base::LogStreamsReferenceMap* logStreamsReference) {
|
||||
LogStreamsReferenceMapPtr logStreamsReference) {
|
||||
m_configurations = configurations;
|
||||
m_logStreamsReference = logStreamsReference;
|
||||
build(m_configurations);
|
||||
@ -1691,7 +1691,7 @@ void TypedConfigurations::build(Configurations* configurations) {
|
||||
// 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 @@ void TypedConfigurations::insertFile(Level level, const std::string& fullFilenam
|
||||
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 @@ bool RegisteredHitCounters::validateNTimes(const char* filename, base::type::Lin
|
||||
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 @@ Logger* RegisteredLoggers::get(const std::string& id, bool forceCreation) {
|
||||
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 @@ bool RegisteredLoggers::remove(const std::string& id) {
|
||||
|
||||
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 @@ void Storage::setApplicationArguments(int argc, char** argv) {
|
||||
} // 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 @@ void LogDispatcher::dispatch(void) {
|
||||
}
|
||||
#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 LogDispatcher::dispatch(void) {
|
||||
|
||||
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::processDispatch() {
|
||||
}
|
||||
|
||||
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 @@ PerformanceTracker::PerformanceTracker(const std::string& blockName,
|
||||
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 @@ std::ostream& operator<<(std::ostream& os, const StackTrace& st) {
|
||||
}
|
||||
|
||||
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 @@ const Configurations* Loggers::defaultConfigurations(void) {
|
||||
return ELPP->registeredLoggers()->defaultConfigurations();
|
||||
}
|
||||
|
||||
const base::LogStreamsReferenceMap* Loggers::logStreamsReference(void) {
|
||||
const base::LogStreamsReferenceMapPtr Loggers::logStreamsReference(void) {
|
||||
return ELPP->registeredLoggers()->logStreamsReference();
|
||||
}
|
||||
|
||||
|
86
vendor/github.com/muflihun/easyloggingpp/src/easylogging++.h
generated
vendored
86
vendor/github.com/muflihun/easyloggingpp/src/easylogging++.h
generated
vendored
@ -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 @@ ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStre
|
||||
# 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 @@ ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStre
|
||||
# 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 @@ enum class Level : base::type::EnumType {
|
||||
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 @@ enum class ConfigurationType : base::type::EnumType {
|
||||
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 @@ class ConfigurationTypeHelper : base::StaticClass {
|
||||
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 @@ enum class LoggingFlag : base::type::EnumType {
|
||||
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 @@ static const char* kSysLogLoggerId = "syslog";
|
||||
#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 @@ const struct {
|
||||
},
|
||||
{
|
||||
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 @@ class File : base::StaticClass {
|
||||
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 @@ class Str : base::StaticClass {
|
||||
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 @@ class OS : base::StaticClass {
|
||||
|
||||
/// @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 @@ class DateTime : base::StaticClass {
|
||||
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 @@ class CommandLineArgs {
|
||||
}
|
||||
/// @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 @@ class Registry : public AbstractRegistry<T_Ptr, std::unordered_map<T_Key, T_Ptr*
|
||||
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 @@ class RegistryWithPred : public AbstractRegistry<T_Ptr, std::vector<T_Ptr*>> {
|
||||
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 @@ class RegistryWithPred : public AbstractRegistry<T_Ptr, std::vector<T_Ptr*>> {
|
||||
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 @@ class Configurations : public base::utils::RegistryWithPred<Configuration, Confi
|
||||
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 @@ class TypedConfigurations : public base::threading::ThreadSafe {
|
||||
/// @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 @@ class TypedConfigurations : public base::threading::ThreadSafe {
|
||||
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 @@ class LogBuilder : base::NoCopy {
|
||||
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 @@ inline void FUNCTION_NAME(const T&);
|
||||
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 @@ class RegisteredLoggers : public base::utils::Registry<Logger, std::string> {
|
||||
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 @@ class RegisteredLoggers : public base::utils::Registry<Logger, std::string> {
|
||||
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 @@ class IterableStack : public IterableContainer<T, Container>, public std::stack<
|
||||
// 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 @@ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.s
|
||||
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 @@ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.s
|
||||
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 @@ return writeIterator(template_inst.begin(), template_inst.end(), template_inst.s
|
||||
/// 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 @@ ELPP_LITERAL("(") << elem->first << ELPP_LITERAL(", ") << elem->second << ELPP_L
|
||||
#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("...");
|
||||
@ -3825,7 +3831,7 @@ class Loggers : base::StaticClass {
|
||||
/// @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.
|
||||
@ -3836,7 +3842,7 @@ class Loggers : base::StaticClass {
|
||||
/// @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);
|
||||
|
2
vendor/github.com/muflihun/easyloggingpp/test/format-specifier-test.h
generated
vendored
2
vendor/github.com/muflihun/easyloggingpp/test/format-specifier-test.h
generated
vendored
@ -22,7 +22,7 @@ TEST(FormatSpecifierTest, TestLevShortSpecifier) {
|
||||
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");
|
||||
|
6
vendor/github.com/muflihun/easyloggingpp/tools/cpplint.py
generated
vendored
6
vendor/github.com/muflihun/easyloggingpp/tools/cpplint.py
generated
vendored
@ -113,7 +113,7 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...]
|
||||
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 @@ _ERROR_CATEGORIES = [
|
||||
'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 @@ def CheckForNonConstReference(filename, clean_lines, linenum,
|
||||
# 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:
|
||||
|
Loading…
Reference in New Issue
Block a user