mirror of
https://github.com/FairRootGroup/FairLogger.git
synced 2025-10-15 17:41:44 +00:00
Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9a8acdf6eb | ||
|
0c2532e6b9 | ||
|
49a6e9389d | ||
|
0901655a65 | ||
|
1f600fa981 | ||
|
63820e5f2c | ||
|
de02bd068f | ||
|
24001470e5 | ||
|
5696fef902 | ||
|
80b5eb6fb1 | ||
|
c26d4ba013 | ||
|
661bd88d81 | ||
|
65068fd959 | ||
|
00e7468b25 | ||
|
af288551aa | ||
|
8f68cef9e3 | ||
|
6d71d22986 | ||
|
e72a0409a6 | ||
|
88c13b67cc |
@@ -16,8 +16,8 @@ include(FairLoggerLib)
|
||||
set_fairlogger_cmake_policies()
|
||||
get_git_version(OUTVAR_PREFIX FairLogger)
|
||||
|
||||
project(FairLogger VERSION ${FairLogger_VERSION} LANGUAGES CXX)
|
||||
message("${BWhite}${PROJECT_NAME}${CR} ${FairLogger_GIT_VERSION} from ${FairLogger_DATE}")
|
||||
project(FairLogger VERSION ${FairLogger_VERSION} LANGUAGES C CXX)
|
||||
message(STATUS "${BWhite}${PROJECT_NAME}${CR} ${FairLogger_GIT_VERSION} from ${FairLogger_DATE}")
|
||||
|
||||
set_fairlogger_defaults()
|
||||
|
||||
@@ -32,7 +32,7 @@ configure_file(logger/Version.h.in
|
||||
@ONLY
|
||||
)
|
||||
|
||||
add_library(FairLogger SHARED
|
||||
add_library(FairLogger
|
||||
logger/Logger.cxx
|
||||
logger/Logger.h
|
||||
)
|
||||
@@ -40,7 +40,11 @@ add_library(FairLogger SHARED
|
||||
target_include_directories(FairLogger
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/logger>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
set_target_properties(FairLogger PROPERTIES
|
||||
VERSION ${FairLogger_GIT_VERSION}
|
||||
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
|
||||
)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
@@ -60,6 +64,7 @@ install(TARGETS
|
||||
|
||||
EXPORT ${FairLogger_EXPORT_SET}
|
||||
LIBRARY DESTINATION ${FairLogger_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${FairLogger_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${FairLogger_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
@@ -84,14 +89,14 @@ endif()
|
||||
|
||||
|
||||
# Summary ######################################################################
|
||||
message(" ")
|
||||
message(" ${Cyan}COMPONENT BUILT? INFO${CR}")
|
||||
message(" ${BWhite}library${CR} ${BGreen}YES${CR} (default, always built)")
|
||||
message(STATUS " ")
|
||||
message(STATUS " ${Cyan}COMPONENT BUILT? INFO${CR}")
|
||||
message(STATUS " ${BWhite}library${CR} ${BGreen}YES${CR} (default, always built)")
|
||||
if(BUILD_TESTING)
|
||||
set(testing_summary "${BGreen}YES${CR} (default, disable with ${BMagenta}-DBUILD_TESTING=OFF${CR})")
|
||||
else()
|
||||
set(testing_summary "${BRed} NO${CR} (enable with ${BMagenta}-DBUILD_TESTING=ON${CR})")
|
||||
endif()
|
||||
message(" ${BWhite}tests${CR} ${testing_summary}")
|
||||
message(" ")
|
||||
message(STATUS " ${BWhite}tests${CR} ${testing_summary}")
|
||||
message(STATUS " ")
|
||||
################################################################################
|
||||
|
@@ -47,10 +47,6 @@ EndIf()
|
||||
|
||||
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}"
|
||||
OPTIONS "${configure_options}"
|
||||
)
|
||||
|
5
Jenkinsfile
vendored
5
Jenkinsfile
vendored
@@ -37,9 +37,8 @@ pipeline{
|
||||
steps{
|
||||
script {
|
||||
parallel(buildMatrix([
|
||||
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc4.9', fairsoft: 'oct17'],
|
||||
[os: 'MacOS10.11', arch: 'x86_64', compiler: 'AppleLLVM8.0.0', fairsoft: 'oct17'],
|
||||
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM9.0.0', fairsoft: 'oct17'],
|
||||
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc4.9', fairsoft: 'may18'],
|
||||
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM9.0.0', fairsoft: 'may18'],
|
||||
]) { spec, label ->
|
||||
sh '''\
|
||||
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'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -2,6 +2,8 @@
|
||||
|
||||
Lightweight and fast C++ Logging Library
|
||||
|
||||

|
||||
|
||||
| Branch | Build Status |
|
||||
| :---: | :--- |
|
||||
| `master` |  |
|
||||
@@ -38,6 +40,7 @@ find_package(FairLogger)
|
||||
On command line:
|
||||
|
||||
* `-DDISABLE_COLOR=ON` disables coloured console output.
|
||||
* `-DBUILD_TESTING=OFF` disables building of unit tests.
|
||||
|
||||
## License
|
||||
|
||||
|
@@ -6,8 +6,6 @@
|
||||
# copied verbatim in the file "LICENSE" #
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 3.9.4 FATAL_ERROR)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
### General variables for project discovery/inspection
|
||||
@@ -16,9 +14,12 @@ set(FairLogger_GIT_VERSION @FairLogger_GIT_VERSION@)
|
||||
|
||||
set_and_check(FairLogger_ROOT @PACKAGE_CMAKE_INSTALL_PREFIX@)
|
||||
set_and_check(FairLogger_BINDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@FairLogger_INSTALL_BINDIR@)
|
||||
set_and_check(FairLogger_INCDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@FairLogger_INSTALL_INCDIR@)
|
||||
set_and_check(FairLogger_INCDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@)
|
||||
set_and_check(FairLogger_LIBDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@FairLogger_INSTALL_LIBDIR@)
|
||||
set_and_check(FairLogger_DATADIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@FairLogger_INSTALL_DATADIR@)
|
||||
|
||||
set(@PROJECT_NAME@_CXX_STANDARD_REQUIRED @CMAKE_CXX_STANDARD_REQUIRED@)
|
||||
set(@PROJECT_NAME@_CXX_STANDARD @CMAKE_CXX_STANDARD@)
|
||||
set(@PROJECT_NAME@_CXX_EXTENSIONS @CMAKE_CXX_EXTENSIONS@)
|
||||
|
||||
### Import targets
|
||||
include(@PACKAGE_CMAKE_INSTALL_PREFIX@/@PACKAGE_INSTALL_DESTINATION@/FairLoggerTargets.cmake)
|
||||
|
@@ -35,7 +35,9 @@ endif()
|
||||
macro(set_fairlogger_cmake_policies)
|
||||
# Find more details to each policy with cmake --help-policy CMPXXXX
|
||||
foreach(policy
|
||||
CMP0025 # Compiler id for Apple Clang is now AppleClang.
|
||||
CMP0028 # Double colon in target name means ALIAS or IMPORTED target.
|
||||
CMP0042 # MACOSX_RPATH is enabled by default.
|
||||
CMP0048 # The ``project()`` command manages VERSION variables.
|
||||
CMP0054 # Only interpret ``if()`` arguments as variables or keywords when unquoted.
|
||||
)
|
||||
@@ -123,17 +125,44 @@ macro(set_fairlogger_defaults)
|
||||
# Generate compile_commands.json file (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
||||
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
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Define install dirs
|
||||
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_DATADIR ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER})
|
||||
|
||||
# https://cmake.org/Wiki/CMake_RPATH_handling
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${FairLogger_INSTALL_LIBDIR}" isSystemDir)
|
||||
if("${isSystemDir}" STREQUAL "-1")
|
||||
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()
|
||||
|
||||
# Define export set, only one for now
|
||||
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()
|
||||
|
||||
|
||||
@@ -141,7 +170,7 @@ endmacro()
|
||||
macro(install_fairlogger_cmake_package)
|
||||
include(CMakePackageConfigHelpers)
|
||||
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}
|
||||
NAMESPACE ${PROJECT_NAME}::
|
||||
|
BIN
example.png
Normal file
BIN
example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 220 KiB |
@@ -147,10 +147,12 @@ const unordered_map<string, Verbosity> Logger::fVerbosityMap =
|
||||
{ "high", Verbosity::high },
|
||||
{ "medium", Verbosity::medium },
|
||||
{ "low", Verbosity::low },
|
||||
{ "verylow", Verbosity::verylow },
|
||||
{ "VERYHIGH", Verbosity::veryhigh },
|
||||
{ "HIGH", Verbosity::high },
|
||||
{ "MEDIUM", Verbosity::medium },
|
||||
{ "LOW", Verbosity::low }
|
||||
{ "LOW", Verbosity::low },
|
||||
{ "VERYLOW", Verbosity::verylow }
|
||||
};
|
||||
|
||||
const unordered_map<string, Severity> Logger::fSeverityMap =
|
||||
@@ -161,16 +163,14 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
|
||||
{ "ERROR", Severity::error },
|
||||
{ "warn", Severity::warn },
|
||||
{ "WARN", Severity::warn },
|
||||
{ "warning", Severity::warning },
|
||||
{ "WARNING", Severity::warning },
|
||||
{ "warning", Severity::warn },
|
||||
{ "WARNING", Severity::warn },
|
||||
{ "state", Severity::state },
|
||||
{ "STATE", Severity::state },
|
||||
{ "info", Severity::info },
|
||||
{ "INFO", Severity::info },
|
||||
{ "debug", Severity::debug },
|
||||
{ "DEBUG", Severity::debug },
|
||||
{ "trace", Severity::trace },
|
||||
{ "TRACE", Severity::trace },
|
||||
{ "debug1", Severity::debug1 },
|
||||
{ "DEBUG1", Severity::debug1 },
|
||||
{ "debug2", Severity::debug2 },
|
||||
@@ -178,7 +178,9 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
|
||||
{ "debug3", Severity::debug3 },
|
||||
{ "DEBUG3", Severity::debug3 },
|
||||
{ "debug4", Severity::debug4 },
|
||||
{ "DEBUG4", Severity::debug4 }
|
||||
{ "DEBUG4", Severity::debug4 },
|
||||
{ "trace", Severity::trace },
|
||||
{ "TRACE", Severity::trace }
|
||||
};
|
||||
|
||||
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",
|
||||
"medium",
|
||||
"high",
|
||||
@@ -253,6 +256,11 @@ void Logger::SetConsoleSeverity(const string& severityStr)
|
||||
}
|
||||
}
|
||||
|
||||
Severity Logger::GetConsoleSeverity()
|
||||
{
|
||||
return fConsoleSeverity;
|
||||
}
|
||||
|
||||
void Logger::SetFileSeverity(const Severity 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()
|
||||
{
|
||||
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)
|
||||
{
|
||||
fVerbosity = verbosity;
|
||||
@@ -338,6 +435,11 @@ void Logger::SetVerbosity(const string& verbosityStr)
|
||||
}
|
||||
}
|
||||
|
||||
Verbosity Logger::GetVerbosity()
|
||||
{
|
||||
return fVerbosity;
|
||||
}
|
||||
|
||||
void Logger::SetConsoleColor(const bool colored)
|
||||
{
|
||||
fColored = colored;
|
||||
@@ -473,9 +575,12 @@ void Logger::RemoveCustomSink(const string& key)
|
||||
Logger& Logger::Log()
|
||||
{
|
||||
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())
|
||||
@@ -490,14 +595,20 @@ Logger& Logger::Log()
|
||||
fBWOut << "[" << tsstr << "]";
|
||||
}
|
||||
|
||||
fBWOut << "[" << fMetaData.severity_name << "]";
|
||||
if (fVerbosity > Verbosity::verylow)
|
||||
{
|
||||
fBWOut << "[" << fMetaData.severity_name << "]";
|
||||
}
|
||||
|
||||
if (fVerbosity == Verbosity::veryhigh)
|
||||
{
|
||||
fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]";
|
||||
}
|
||||
|
||||
fBWOut << " ";
|
||||
if (fVerbosity != Verbosity::verylow)
|
||||
{
|
||||
fBWOut << " ";
|
||||
}
|
||||
}
|
||||
|
||||
if (fColored && (LoggingToConsole()))
|
||||
@@ -512,14 +623,20 @@ Logger& Logger::Log()
|
||||
fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]";
|
||||
}
|
||||
|
||||
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
|
||||
if (fVerbosity > Verbosity::verylow)
|
||||
{
|
||||
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
|
||||
}
|
||||
|
||||
if (fVerbosity == Verbosity::veryhigh)
|
||||
{
|
||||
fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]";
|
||||
}
|
||||
|
||||
fColorOut << " ";
|
||||
if (fVerbosity != Verbosity::verylow)
|
||||
{
|
||||
fColorOut << " ";
|
||||
}
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
@@ -59,17 +59,20 @@ enum class Severity : int
|
||||
};
|
||||
|
||||
// verbosity levels:
|
||||
// verylow: message
|
||||
// low: [severity] message
|
||||
// medium: [HH:MM:SS][severity] message
|
||||
// high: [process name][HH:MM:SS:µS][severity] message
|
||||
// veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message
|
||||
enum class Verbosity : int
|
||||
{
|
||||
verylow,
|
||||
low,
|
||||
medium,
|
||||
high,
|
||||
veryhigh,
|
||||
// backwards-compatibility:
|
||||
VERYLOW = verylow,
|
||||
LOW = low,
|
||||
MEDIUM = medium,
|
||||
HIGH = high,
|
||||
@@ -116,6 +119,7 @@ class Logger
|
||||
|
||||
static void SetConsoleSeverity(const Severity severity);
|
||||
static void SetConsoleSeverity(const std::string& severityStr);
|
||||
static Severity GetConsoleSeverity();
|
||||
|
||||
static void SetFileSeverity(const Severity severity);
|
||||
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 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 std::string& severityStr);
|
||||
|
||||
static void SetVerbosity(const Verbosity verbosity);
|
||||
static void SetVerbosity(const std::string& verbosityStr);
|
||||
static Verbosity GetVerbosity();
|
||||
|
||||
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, Severity> fSeverityMap;
|
||||
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);
|
||||
|
||||
|
@@ -10,7 +10,6 @@
|
||||
|
||||
#define FAIRLOGGER_VERSION "@PROJECT_VERSION@"
|
||||
#define FAIRLOGGER_VERSION_DEC (@PROJECT_VERSION_MAJOR@ * 10000) + (@PROJECT_VERSION_MINOR@ * 100) + @PROJECT_VERSION_PATCH@
|
||||
#define FAIRLOGGER_VERSION_HEX (@PROJECT_VERSION_MAJOR@ << 16) + (@PROJECT_VERSION_MINOR@ << 8) + @PROJECT_VERSION_PATCH@
|
||||
#define FAIRLOGGER_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
|
||||
#define FAIRLOGGER_VERSION_MINOR @PROJECT_VERSION_MINOR@
|
||||
#define FAIRLOGGER_VERSION_PATCH @PROJECT_VERSION_PATCH@
|
||||
|
@@ -39,6 +39,9 @@ void printAllVerbositiesWithSeverity(Severity 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;
|
||||
Logger::SetVerbosity(Verbosity::low);
|
||||
printEverySeverity();
|
||||
@@ -57,6 +60,8 @@ void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
|
||||
{
|
||||
Logger::SetConsoleSeverity(sev);
|
||||
|
||||
Logger::SetVerbosity(Verbosity::verylow);
|
||||
printEverySeverity();
|
||||
Logger::SetVerbosity(Verbosity::low);
|
||||
printEverySeverity();
|
||||
Logger::SetVerbosity(Verbosity::medium);
|
||||
|
Reference in New Issue
Block a user