mirror of
https://github.com/FairRootGroup/FairLogger.git
synced 2025-10-17 18:41:45 +00:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9a8acdf6eb | ||
|
0c2532e6b9 | ||
|
49a6e9389d | ||
|
0901655a65 | ||
|
1f600fa981 | ||
|
63820e5f2c | ||
|
de02bd068f | ||
|
24001470e5 | ||
|
5696fef902 | ||
|
80b5eb6fb1 | ||
|
c26d4ba013 |
@@ -32,7 +32,7 @@ configure_file(logger/Version.h.in
|
|||||||
@ONLY
|
@ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(FairLogger SHARED
|
add_library(FairLogger
|
||||||
logger/Logger.cxx
|
logger/Logger.cxx
|
||||||
logger/Logger.h
|
logger/Logger.h
|
||||||
)
|
)
|
||||||
@@ -43,7 +43,7 @@ target_include_directories(FairLogger
|
|||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
)
|
)
|
||||||
set_target_properties(FairLogger PROPERTIES
|
set_target_properties(FairLogger PROPERTIES
|
||||||
VERSION ${PROJECT_VERSION}
|
VERSION ${FairLogger_GIT_VERSION}
|
||||||
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
|
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -64,6 +64,7 @@ install(TARGETS
|
|||||||
|
|
||||||
EXPORT ${FairLogger_EXPORT_SET}
|
EXPORT ${FairLogger_EXPORT_SET}
|
||||||
LIBRARY DESTINATION ${FairLogger_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${FairLogger_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${FairLogger_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${FairLogger_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${FairLogger_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -47,10 +47,6 @@ EndIf()
|
|||||||
|
|
||||||
Ctest_Start($ENV{ctest_model})
|
Ctest_Start($ENV{ctest_model})
|
||||||
|
|
||||||
If(NOT $ENV{ctest_model} MATCHES Experimental)
|
|
||||||
Ctest_Update(SOURCE "${CTEST_SOURCE_DIRECTORY}")
|
|
||||||
EndIf()
|
|
||||||
|
|
||||||
Ctest_Configure(BUILD "${CTEST_BINARY_DIRECTORY}"
|
Ctest_Configure(BUILD "${CTEST_BINARY_DIRECTORY}"
|
||||||
OPTIONS "${configure_options}"
|
OPTIONS "${configure_options}"
|
||||||
)
|
)
|
||||||
|
5
Jenkinsfile
vendored
5
Jenkinsfile
vendored
@@ -37,9 +37,8 @@ pipeline{
|
|||||||
steps{
|
steps{
|
||||||
script {
|
script {
|
||||||
parallel(buildMatrix([
|
parallel(buildMatrix([
|
||||||
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc4.9', fairsoft: 'oct17'],
|
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc4.9', fairsoft: 'may18'],
|
||||||
[os: 'MacOS10.11', arch: 'x86_64', compiler: 'AppleLLVM8.0.0', fairsoft: 'oct17'],
|
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM9.0.0', fairsoft: 'may18'],
|
||||||
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM9.0.0', fairsoft: 'oct17'],
|
|
||||||
]) { spec, label ->
|
]) { spec, label ->
|
||||||
sh '''\
|
sh '''\
|
||||||
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
|
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
|
||||||
|
55
Jenkinsfile.nightly
Normal file
55
Jenkinsfile.nightly
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!groovy
|
||||||
|
|
||||||
|
def specToLabel(Map spec) {
|
||||||
|
return "${spec.os}-${spec.arch}-${spec.compiler}-FairSoft_${spec.fairsoft}"
|
||||||
|
}
|
||||||
|
|
||||||
|
def buildMatrix(List specs, Closure callback) {
|
||||||
|
def nodes = [:]
|
||||||
|
for (spec in specs) {
|
||||||
|
def label = specToLabel(spec)
|
||||||
|
nodes[label] = {
|
||||||
|
node(label) {
|
||||||
|
try {
|
||||||
|
deleteDir()
|
||||||
|
checkout scm
|
||||||
|
|
||||||
|
callback.call(spec, label)
|
||||||
|
|
||||||
|
deleteDir()
|
||||||
|
} catch (e) {
|
||||||
|
deleteDir()
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nodes
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline{
|
||||||
|
agent none
|
||||||
|
triggers { cron('H 2 * * *') }
|
||||||
|
stages {
|
||||||
|
stage("Run Nightly Build/Test Matrix") {
|
||||||
|
steps{
|
||||||
|
script {
|
||||||
|
parallel(buildMatrix([
|
||||||
|
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc4.9', fairsoft: 'may18'],
|
||||||
|
[os: 'MacOS10.11', arch: 'x86_64', compiler: 'AppleLLVM8.0.0', fairsoft: 'may18'],
|
||||||
|
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM9.0.0', fairsoft: 'may18'],
|
||||||
|
]) { spec, label ->
|
||||||
|
sh '''\
|
||||||
|
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
|
||||||
|
echo "export SOURCEDIR=$PWD" >> Dart.cfg
|
||||||
|
echo "export PATH=$SIMPATH/bin:$PATH" >> Dart.cfg
|
||||||
|
echo "export GIT_BRANCH=dev" >> Dart.cfg
|
||||||
|
'''
|
||||||
|
sh './Dart.sh Nightly Dart.cfg'
|
||||||
|
sh './Dart.sh Profile Dart.cfg'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -6,8 +6,6 @@
|
|||||||
# copied verbatim in the file "LICENSE" #
|
# copied verbatim in the file "LICENSE" #
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.9.4 FATAL_ERROR)
|
|
||||||
|
|
||||||
@PACKAGE_INIT@
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
### General variables for project discovery/inspection
|
### General variables for project discovery/inspection
|
||||||
|
@@ -125,24 +125,44 @@ macro(set_fairlogger_defaults)
|
|||||||
# Generate compile_commands.json file (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
# Generate compile_commands.json file (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
if(NOT BUILD_SHARED_LIBS)
|
||||||
|
set(BUILD_SHARED_LIBS ON CACHE BOOL "Whether to build shared libraries or static archives")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set -fPIC as default for all library types
|
||||||
|
if(NOT CMAKE_POSITION_INDEPENDENT_CODE)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Define CMAKE_INSTALL_*DIR family of variables
|
# Define CMAKE_INSTALL_*DIR family of variables
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Define install dirs
|
# Define install dirs
|
||||||
set(FairLogger_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
|
set(FairLogger_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
|
||||||
set(FairLogger_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME_LOWER})
|
set(FairLogger_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||||
set(FairLogger_INSTALL_INCDIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME_LOWER})
|
set(FairLogger_INSTALL_INCDIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME_LOWER})
|
||||||
set(FairLogger_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER})
|
set(FairLogger_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER})
|
||||||
|
|
||||||
# https://cmake.org/Wiki/CMake_RPATH_handling#Always_full_RPATH
|
# https://cmake.org/Wiki/CMake_RPATH_handling
|
||||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_LIBDIR}" isSystemDir)
|
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${FairLogger_INSTALL_LIBDIR}" isSystemDir)
|
||||||
if("${isSystemDir}" STREQUAL "-1")
|
if("${isSystemDir}" STREQUAL "-1")
|
||||||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_LIBDIR}")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-Wl,--enable-new-dtags")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--enable-new-dtags")
|
||||||
|
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${FairLogger_INSTALL_LIBDIR}")
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set(CMAKE_INSTALL_RPATH "@loader_path/../${FairLogger_INSTALL_LIBDIR}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${FairLogger_INSTALL_LIBDIR}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Define export set, only one for now
|
# Define export set, only one for now
|
||||||
set(FairLogger_EXPORT_SET ${PROJECT_NAME}Targets)
|
set(FairLogger_EXPORT_SET ${PROJECT_NAME}Targets)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS_NIGHTLY "-O2 -g -Wshadow -Wall -Wextra")
|
||||||
|
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs -Wshadow -Wall -Wextra -Wunused-variable")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
@@ -150,7 +170,7 @@ endmacro()
|
|||||||
macro(install_fairlogger_cmake_package)
|
macro(install_fairlogger_cmake_package)
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
set(PACKAGE_INSTALL_DESTINATION
|
set(PACKAGE_INSTALL_DESTINATION
|
||||||
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
|
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${FairLogger_GIT_VERSION}
|
||||||
)
|
)
|
||||||
install(EXPORT ${FairLogger_EXPORT_SET}
|
install(EXPORT ${FairLogger_EXPORT_SET}
|
||||||
NAMESPACE ${PROJECT_NAME}::
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
@@ -147,10 +147,12 @@ const unordered_map<string, Verbosity> Logger::fVerbosityMap =
|
|||||||
{ "high", Verbosity::high },
|
{ "high", Verbosity::high },
|
||||||
{ "medium", Verbosity::medium },
|
{ "medium", Verbosity::medium },
|
||||||
{ "low", Verbosity::low },
|
{ "low", Verbosity::low },
|
||||||
|
{ "verylow", Verbosity::verylow },
|
||||||
{ "VERYHIGH", Verbosity::veryhigh },
|
{ "VERYHIGH", Verbosity::veryhigh },
|
||||||
{ "HIGH", Verbosity::high },
|
{ "HIGH", Verbosity::high },
|
||||||
{ "MEDIUM", Verbosity::medium },
|
{ "MEDIUM", Verbosity::medium },
|
||||||
{ "LOW", Verbosity::low }
|
{ "LOW", Verbosity::low },
|
||||||
|
{ "VERYLOW", Verbosity::verylow }
|
||||||
};
|
};
|
||||||
|
|
||||||
const unordered_map<string, Severity> Logger::fSeverityMap =
|
const unordered_map<string, Severity> Logger::fSeverityMap =
|
||||||
@@ -161,16 +163,14 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
|
|||||||
{ "ERROR", Severity::error },
|
{ "ERROR", Severity::error },
|
||||||
{ "warn", Severity::warn },
|
{ "warn", Severity::warn },
|
||||||
{ "WARN", Severity::warn },
|
{ "WARN", Severity::warn },
|
||||||
{ "warning", Severity::warning },
|
{ "warning", Severity::warn },
|
||||||
{ "WARNING", Severity::warning },
|
{ "WARNING", Severity::warn },
|
||||||
{ "state", Severity::state },
|
{ "state", Severity::state },
|
||||||
{ "STATE", Severity::state },
|
{ "STATE", Severity::state },
|
||||||
{ "info", Severity::info },
|
{ "info", Severity::info },
|
||||||
{ "INFO", Severity::info },
|
{ "INFO", Severity::info },
|
||||||
{ "debug", Severity::debug },
|
{ "debug", Severity::debug },
|
||||||
{ "DEBUG", Severity::debug },
|
{ "DEBUG", Severity::debug },
|
||||||
{ "trace", Severity::trace },
|
|
||||||
{ "TRACE", Severity::trace },
|
|
||||||
{ "debug1", Severity::debug1 },
|
{ "debug1", Severity::debug1 },
|
||||||
{ "DEBUG1", Severity::debug1 },
|
{ "DEBUG1", Severity::debug1 },
|
||||||
{ "debug2", Severity::debug2 },
|
{ "debug2", Severity::debug2 },
|
||||||
@@ -178,7 +178,9 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
|
|||||||
{ "debug3", Severity::debug3 },
|
{ "debug3", Severity::debug3 },
|
||||||
{ "DEBUG3", Severity::debug3 },
|
{ "DEBUG3", Severity::debug3 },
|
||||||
{ "debug4", Severity::debug4 },
|
{ "debug4", Severity::debug4 },
|
||||||
{ "DEBUG4", Severity::debug4 }
|
{ "DEBUG4", Severity::debug4 },
|
||||||
|
{ "trace", Severity::trace },
|
||||||
|
{ "TRACE", Severity::trace }
|
||||||
};
|
};
|
||||||
|
|
||||||
const array<string, 12> Logger::fSeverityNames =
|
const array<string, 12> Logger::fSeverityNames =
|
||||||
@@ -199,9 +201,10 @@ const array<string, 12> Logger::fSeverityNames =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const array<string, 4> Logger::fVerbosityNames =
|
const array<string, 5> Logger::fVerbosityNames =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
"verylow",
|
||||||
"low",
|
"low",
|
||||||
"medium",
|
"medium",
|
||||||
"high",
|
"high",
|
||||||
@@ -253,6 +256,11 @@ void Logger::SetConsoleSeverity(const string& severityStr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Severity Logger::GetConsoleSeverity()
|
||||||
|
{
|
||||||
|
return fConsoleSeverity;
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::SetFileSeverity(const Severity severity)
|
void Logger::SetFileSeverity(const Severity severity)
|
||||||
{
|
{
|
||||||
fFileSeverity = severity;
|
fFileSeverity = severity;
|
||||||
@@ -291,6 +299,82 @@ void Logger::SetCustomSeverity(const string& key, const string& severityStr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto Logger::CycleConsoleSeverityUp() -> void
|
||||||
|
{
|
||||||
|
size_t current = static_cast<size_t>(fConsoleSeverity);
|
||||||
|
if (current == fSeverityNames.size() - 1) {
|
||||||
|
SetConsoleSeverity(static_cast<Severity>(0));
|
||||||
|
} else {
|
||||||
|
SetConsoleSeverity(static_cast<Severity>(current + 1));
|
||||||
|
}
|
||||||
|
size_t newCurrent = static_cast<size_t>(fConsoleSeverity);
|
||||||
|
stringstream ss;
|
||||||
|
|
||||||
|
for (int i = 0; i < fSeverityNames.size(); ++i) {
|
||||||
|
ss << (i == newCurrent ? ">" : " ") << fSeverityNames.at(i) << (i == newCurrent ? "<" : " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
ss << "\n\n";
|
||||||
|
cout << ss.str() << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Logger::CycleConsoleSeverityDown() -> void
|
||||||
|
{
|
||||||
|
size_t current = static_cast<size_t>(fConsoleSeverity);
|
||||||
|
if (current == 0) {
|
||||||
|
SetConsoleSeverity(static_cast<Severity>(fSeverityNames.size() - 1));
|
||||||
|
} else {
|
||||||
|
SetConsoleSeverity(static_cast<Severity>(current - 1));
|
||||||
|
}
|
||||||
|
size_t newCurrent = static_cast<size_t>(fConsoleSeverity);
|
||||||
|
stringstream ss;
|
||||||
|
|
||||||
|
for (int i = 0; i < fSeverityNames.size(); ++i) {
|
||||||
|
ss << (i == newCurrent ? ">" : " ") << fSeverityNames.at(i) << (i == newCurrent ? "<" : " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
ss << "\n\n";
|
||||||
|
cout << ss.str() << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Logger::CycleVerbosityUp() -> void
|
||||||
|
{
|
||||||
|
size_t current = static_cast<size_t>(fVerbosity);
|
||||||
|
if (current == fVerbosityNames.size() - 1) {
|
||||||
|
SetVerbosity(static_cast<Verbosity>(0));
|
||||||
|
} else {
|
||||||
|
SetVerbosity(static_cast<Verbosity>(current + 1));
|
||||||
|
}
|
||||||
|
size_t newCurrent = static_cast<size_t>(fVerbosity);
|
||||||
|
stringstream ss;
|
||||||
|
|
||||||
|
for (int i = 0; i < fVerbosityNames.size(); ++i) {
|
||||||
|
ss << (i == newCurrent ? ">" : " ") << fVerbosityNames.at(i) << (i == newCurrent ? "<" : " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
ss << "\n\n";
|
||||||
|
cout << ss.str() << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Logger::CycleVerbosityDown() -> void
|
||||||
|
{
|
||||||
|
size_t current = static_cast<size_t>(fVerbosity);
|
||||||
|
if (current == 0) {
|
||||||
|
SetVerbosity(static_cast<Verbosity>(fVerbosityNames.size() - 1));
|
||||||
|
} else {
|
||||||
|
SetVerbosity(static_cast<Verbosity>(current - 1));
|
||||||
|
}
|
||||||
|
size_t newCurrent = static_cast<size_t>(fVerbosity);
|
||||||
|
stringstream ss;
|
||||||
|
|
||||||
|
for (int i = 0; i < fVerbosityNames.size(); ++i) {
|
||||||
|
ss << (i == newCurrent ? ">" : " ") << fVerbosityNames.at(i) << (i == newCurrent ? "<" : " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
ss << "\n\n";
|
||||||
|
cout << ss.str() << flush;
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::UpdateMinSeverity()
|
void Logger::UpdateMinSeverity()
|
||||||
{
|
{
|
||||||
fMinSeverity = (fConsoleSeverity <= fFileSeverity) ? fFileSeverity : fConsoleSeverity;
|
fMinSeverity = (fConsoleSeverity <= fFileSeverity) ? fFileSeverity : fConsoleSeverity;
|
||||||
@@ -320,6 +404,19 @@ bool Logger::Logging(Severity severity)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Logger::Logging(const std::string& severityStr)
|
||||||
|
{
|
||||||
|
if (fSeverityMap.count(severityStr))
|
||||||
|
{
|
||||||
|
return Logging(fSeverityMap.at(severityStr));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG(error) << "Unknown severity setting: '" << severityStr;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::SetVerbosity(const Verbosity verbosity)
|
void Logger::SetVerbosity(const Verbosity verbosity)
|
||||||
{
|
{
|
||||||
fVerbosity = verbosity;
|
fVerbosity = verbosity;
|
||||||
@@ -338,6 +435,11 @@ void Logger::SetVerbosity(const string& verbosityStr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Verbosity Logger::GetVerbosity()
|
||||||
|
{
|
||||||
|
return fVerbosity;
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::SetConsoleColor(const bool colored)
|
void Logger::SetConsoleColor(const bool colored)
|
||||||
{
|
{
|
||||||
fColored = colored;
|
fColored = colored;
|
||||||
@@ -473,9 +575,12 @@ void Logger::RemoveCustomSink(const string& key)
|
|||||||
Logger& Logger::Log()
|
Logger& Logger::Log()
|
||||||
{
|
{
|
||||||
char tsstr[32];
|
char tsstr[32];
|
||||||
if (!strftime(tsstr, sizeof(tsstr), "%H:%M:%S", localtime(&(fMetaData.timestamp))))
|
|
||||||
{
|
{
|
||||||
tsstr[0] = 'u';
|
lock_guard<mutex> lock(fMtx); // localtime is not threadsafe, guard it
|
||||||
|
if (!strftime(tsstr, sizeof(tsstr), "%H:%M:%S", localtime(&(fMetaData.timestamp))))
|
||||||
|
{
|
||||||
|
tsstr[0] = 'u';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!fColored && LoggingToConsole()) || LoggingToFile())
|
if ((!fColored && LoggingToConsole()) || LoggingToFile())
|
||||||
@@ -490,14 +595,20 @@ Logger& Logger::Log()
|
|||||||
fBWOut << "[" << tsstr << "]";
|
fBWOut << "[" << tsstr << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
fBWOut << "[" << fMetaData.severity_name << "]";
|
if (fVerbosity > Verbosity::verylow)
|
||||||
|
{
|
||||||
|
fBWOut << "[" << fMetaData.severity_name << "]";
|
||||||
|
}
|
||||||
|
|
||||||
if (fVerbosity == Verbosity::veryhigh)
|
if (fVerbosity == Verbosity::veryhigh)
|
||||||
{
|
{
|
||||||
fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]";
|
fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
fBWOut << " ";
|
if (fVerbosity != Verbosity::verylow)
|
||||||
|
{
|
||||||
|
fBWOut << " ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fColored && (LoggingToConsole()))
|
if (fColored && (LoggingToConsole()))
|
||||||
@@ -512,14 +623,20 @@ Logger& Logger::Log()
|
|||||||
fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]";
|
fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
|
if (fVerbosity > Verbosity::verylow)
|
||||||
|
{
|
||||||
|
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
|
||||||
|
}
|
||||||
|
|
||||||
if (fVerbosity == Verbosity::veryhigh)
|
if (fVerbosity == Verbosity::veryhigh)
|
||||||
{
|
{
|
||||||
fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]";
|
fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
fColorOut << " ";
|
if (fVerbosity != Verbosity::verylow)
|
||||||
|
{
|
||||||
|
fColorOut << " ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
|
@@ -59,17 +59,20 @@ enum class Severity : int
|
|||||||
};
|
};
|
||||||
|
|
||||||
// verbosity levels:
|
// verbosity levels:
|
||||||
|
// verylow: message
|
||||||
// low: [severity] message
|
// low: [severity] message
|
||||||
// medium: [HH:MM:SS][severity] message
|
// medium: [HH:MM:SS][severity] message
|
||||||
// high: [process name][HH:MM:SS:µS][severity] message
|
// high: [process name][HH:MM:SS:µS][severity] message
|
||||||
// veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message
|
// veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message
|
||||||
enum class Verbosity : int
|
enum class Verbosity : int
|
||||||
{
|
{
|
||||||
|
verylow,
|
||||||
low,
|
low,
|
||||||
medium,
|
medium,
|
||||||
high,
|
high,
|
||||||
veryhigh,
|
veryhigh,
|
||||||
// backwards-compatibility:
|
// backwards-compatibility:
|
||||||
|
VERYLOW = verylow,
|
||||||
LOW = low,
|
LOW = low,
|
||||||
MEDIUM = medium,
|
MEDIUM = medium,
|
||||||
HIGH = high,
|
HIGH = high,
|
||||||
@@ -116,6 +119,7 @@ class Logger
|
|||||||
|
|
||||||
static void SetConsoleSeverity(const Severity severity);
|
static void SetConsoleSeverity(const Severity severity);
|
||||||
static void SetConsoleSeverity(const std::string& severityStr);
|
static void SetConsoleSeverity(const std::string& severityStr);
|
||||||
|
static Severity GetConsoleSeverity();
|
||||||
|
|
||||||
static void SetFileSeverity(const Severity severity);
|
static void SetFileSeverity(const Severity severity);
|
||||||
static void SetFileSeverity(const std::string& severityStr);
|
static void SetFileSeverity(const std::string& severityStr);
|
||||||
@@ -123,10 +127,17 @@ class Logger
|
|||||||
static void SetCustomSeverity(const std::string& key, const Severity severity);
|
static void SetCustomSeverity(const std::string& key, const Severity severity);
|
||||||
static void SetCustomSeverity(const std::string& key, const std::string& severityStr);
|
static void SetCustomSeverity(const std::string& key, const std::string& severityStr);
|
||||||
|
|
||||||
|
static void CycleConsoleSeverityUp();
|
||||||
|
static void CycleConsoleSeverityDown();
|
||||||
|
static void CycleVerbosityUp();
|
||||||
|
static void CycleVerbosityDown();
|
||||||
|
|
||||||
static bool Logging(const Severity severity);
|
static bool Logging(const Severity severity);
|
||||||
|
static bool Logging(const std::string& severityStr);
|
||||||
|
|
||||||
static void SetVerbosity(const Verbosity verbosity);
|
static void SetVerbosity(const Verbosity verbosity);
|
||||||
static void SetVerbosity(const std::string& verbosityStr);
|
static void SetVerbosity(const std::string& verbosityStr);
|
||||||
|
static Verbosity GetVerbosity();
|
||||||
|
|
||||||
static void SetConsoleColor(const bool colored = true);
|
static void SetConsoleColor(const bool colored = true);
|
||||||
|
|
||||||
@@ -177,7 +188,7 @@ class Logger
|
|||||||
static const std::unordered_map<std::string, Verbosity> fVerbosityMap;
|
static const std::unordered_map<std::string, Verbosity> fVerbosityMap;
|
||||||
static const std::unordered_map<std::string, Severity> fSeverityMap;
|
static const std::unordered_map<std::string, Severity> fSeverityMap;
|
||||||
static const std::array<std::string, 12> fSeverityNames;
|
static const std::array<std::string, 12> fSeverityNames;
|
||||||
static const std::array<std::string, 4> fVerbosityNames;
|
static const std::array<std::string, 5> fVerbosityNames;
|
||||||
|
|
||||||
virtual ~Logger() noexcept(false);
|
virtual ~Logger() noexcept(false);
|
||||||
|
|
||||||
|
@@ -39,6 +39,9 @@ void printAllVerbositiesWithSeverity(Severity sev)
|
|||||||
{
|
{
|
||||||
Logger::SetConsoleSeverity(sev);
|
Logger::SetConsoleSeverity(sev);
|
||||||
|
|
||||||
|
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'verylow' verbosity..." << endl;
|
||||||
|
Logger::SetVerbosity(Verbosity::verylow);
|
||||||
|
printEverySeverity();
|
||||||
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'low' verbosity..." << endl;
|
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'low' verbosity..." << endl;
|
||||||
Logger::SetVerbosity(Verbosity::low);
|
Logger::SetVerbosity(Verbosity::low);
|
||||||
printEverySeverity();
|
printEverySeverity();
|
||||||
@@ -57,6 +60,8 @@ void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
|
|||||||
{
|
{
|
||||||
Logger::SetConsoleSeverity(sev);
|
Logger::SetConsoleSeverity(sev);
|
||||||
|
|
||||||
|
Logger::SetVerbosity(Verbosity::verylow);
|
||||||
|
printEverySeverity();
|
||||||
Logger::SetVerbosity(Verbosity::low);
|
Logger::SetVerbosity(Verbosity::low);
|
||||||
printEverySeverity();
|
printEverySeverity();
|
||||||
Logger::SetVerbosity(Verbosity::medium);
|
Logger::SetVerbosity(Verbosity::medium);
|
||||||
|
Reference in New Issue
Block a user