effectively remove feature - it is almost useless. Keep the change to the unit test avoiding premature exit when fatal signal handling is not enabled in the library

This commit is contained in:
Andreas Schönle 2016-12-06 13:55:47 +01:00
parent b43848c527
commit 4bd1870a76
4 changed files with 9 additions and 28 deletions

View File

@ -76,9 +76,8 @@ If the ```<boolean-expression>``` evaluates to false then the the message for th
const LEVELS DEADLY {FATAL.value + 1, {"DEADLY"}};
```
Both custom and built-in log levels can be turned on and off using the function ```g3::only_change_at_initialization::setLogLevel```. Calling ```g3::only_change_at_initialization::reset``` will reset all built-in levels to their defaults and remove custom levels. If the latter is not the desired behavior the function ```g3::only_change_at_initialization::addLogLevel``` can be used to turn a custom log level on or off and save this state as the default which is restored when ```reset()``` is called.
Calling ```g3::only_change_at_initialization::reset(true)``` will remove all custom levels regardless of whether ```addLevel``` was used with them.
## Sink <a name="sink_creation">creation</a> and utilization
The default sink for g3log is the one as used in g2log. It is a simple file sink with a limited API. The details for the default file sink can be found in [filesink.hpp](src/g3log/filesink.hpp), [filesink.cpp](src/filesink.cpp), [filesinkhelper.ipp](src/filesinkhelper.ipp)

View File

@ -115,9 +115,8 @@ namespace g3 {
namespace only_change_at_initialization {
// Enable/Disable a log level {DEBUG,INFO,WARNING,FATAL}
void setLogLevel(LEVELS level, bool enabled_status);
void addLogLevel(LEVELS level, bool enabled_status = true);
std::string printLevels();
void reset(bool remove_custom_levels = false);
void reset();
} // only_change_at_initialization
#endif

View File

@ -40,23 +40,17 @@ namespace g3 {
}
#ifdef G3_DYNAMIC_LOGGING
std::map<int, atomicbool> g_default_log_level_status = {{g3::kDebugValue, true}, {INFO.value, true}, {WARNING.value, true}, {FATAL.value, true}};
std::map<int, atomicbool> g_log_level_status(g_default_log_level_status);
std::map<int, atomicbool> g_log_level_status = {{g3::kDebugValue, true}, {INFO.value, true}, {WARNING.value, true}, {FATAL.value, true}};
#endif
} // internal
#ifdef G3_DYNAMIC_LOGGING
namespace only_change_at_initialization {
void setLogLevel(LEVELS log_level, bool enabled_status) {
void setLogLevel(LEVELS log_level, bool enabled) {
int level = log_level.value;
internal::g_log_level_status[level].get().store(enabled_status, std::memory_order_release);
internal::g_log_level_status[level].get().store(enabled, std::memory_order_release);
}
void addLogLevel(LEVELS log_level, bool enabled_status) {
internal::g_default_log_level_status[log_level.value].get().store(enabled_status, std::memory_order_release);
setLogLevel(log_level, enabled_status);
}
std::string printLevels() {
std::string levels;
for (auto& v : internal::g_log_level_status) {
@ -65,10 +59,9 @@ namespace g3 {
return levels;
}
void reset(bool remove_custom_levels) {
if (remove_custom_levels)
internal::g_default_log_level_status = { { g3::kDebugValue, true },{ INFO.value, true },{ WARNING.value, true },{ FATAL.value, true } };
internal::g_log_level_status = internal::g_default_log_level_status;
void reset() {
internal::g_log_level_status.clear();
internal::g_log_level_status = std::map<int, atomicbool>{{g3::kDebugValue, true}, {INFO.value, true}, {WARNING.value, true}, {FATAL.value, true}};
}
} // only_change_at_initialization
#endif

View File

@ -572,7 +572,7 @@ namespace {
RestoreDynamicLoggingLevels() {
};
~RestoreDynamicLoggingLevels() {
g3::only_change_at_initialization::reset(true);
g3::only_change_at_initialization::reset();
g3::only_change_at_initialization::setLogLevel(DEBUG, false);
g3::only_change_at_initialization::setLogLevel(INFO, false);
g3::only_change_at_initialization::setLogLevel(WARNING, false);
@ -592,16 +592,6 @@ TEST(CustomLogLevels, AddANonFatal__ThenReset) {
EXPECT_FALSE(g3::logLevel(MYINFO));
}
TEST(CustomLogLevels, AddANonFatalWithDefault__ThenReset) {
RestoreFileLogger logger(log_directory);
RestoreDynamicLoggingLevels raiiLevelRestore;
const LEVELS MYINFO{ WARNING.value + 2,{ "MY_INFO_LEVEL" } };
EXPECT_FALSE(g3::logLevel(MYINFO));
g3::only_change_at_initialization::addLogLevel(MYINFO, true);
EXPECT_TRUE(g3::logLevel(MYINFO));
g3::only_change_at_initialization::reset();
EXPECT_TRUE(g3::logLevel(MYINFO));
}
TEST(CustomLogLevels, AddANonFatal__DidNotAddItToEnabledValue1) {
RestoreFileLogger logger(log_directory);