borg_public/libLSS/tools/log_traits.cpp
2023-05-29 10:41:03 +02:00

87 lines
2.4 KiB
C++

/*+
ARES/HADES/BORG Package -- ./libLSS/tools/log_traits.cpp
Copyright (C) 2014-2020 Guilhem Lavaux <guilhem.lavaux@iap.fr>
Copyright (C) 2009-2020 Jens Jasche <jens.jasche@fysik.su.se>
Additional contributions from:
Guilhem Lavaux <guilhem.lavaux@iap.fr> (2023)
+*/
#include <boost/preprocessor/seq/for_each.hpp>
#include "log_traits.hpp"
#include "libLSS/tools/color_mod.hpp"
#include "libLSS/tools/static_init.hpp"
#include "libLSS/tools/static_auto.hpp"
#include <iostream>
using namespace LibLSS;
using namespace std;
#define IMPLEMENT_LOG_TRAIT(T) \
string LibLSS::T::prefix = ""; \
string LibLSS::T::prefix_c = ""; \
ostream *LibLSS::T::os[LibLSS::T::numOutput];
#define DO_IMPLEMENT(r, DATA, E) IMPLEMENT_LOG_TRAIT(E)
#if !defined(DOXYGEN_SHOULD_SKIP_THIS)
BOOST_PP_SEQ_FOR_EACH(DO_IMPLEMENT, DATA,
(LOG_STD)
(LOG_WARNING)
(LOG_ERROR)
(LOG_INFO)
(LOG_DEBUG)
(LOG_VERBOSE)
(LOG_INFO_SINGLE)
);
#endif
bool LibLSS::QUIET_CONSOLE_START = false;
namespace {
void initializeConsole()
{
using namespace LibLSS::Color;
if (!LibLSS::QUIET_CONSOLE_START)
cout << "Initializing console." << endl;
LOG_STD::prefix = "[STD ] ";
LOG_STD::prefix_c = "[STD ] ";
LOG_STD::os[0] = &std::cout;
LOG_WARNING::prefix = "[WARNING] ";
LOG_WARNING::prefix_c = "[" + fg(MAGENTA,"WARNING",BRIGHT) + "] ";
LOG_WARNING::os[0] = &std::cout;
LOG_WARNING::os[1] = &std::cerr;
LOG_ERROR::prefix = "[ERROR ] ";
LOG_ERROR::prefix_c = "[" + fg(RED, "ERROR",BRIGHT) +" ] ";
LOG_ERROR::os[0] = &std::cerr;
LOG_INFO::prefix = "[INFO ] ";
LOG_INFO::prefix_c= "[" + bg(BLACK,fg(YELLOW, "INFO", BRIGHT)) +" ] ";
LOG_INFO::os[0] = &std::cout;
LOG_INFO_SINGLE::prefix = "[INFO S ] ";
LOG_INFO_SINGLE::prefix_c= "[" + bg(BLACK,fg(YELLOW, "INFO S", BRIGHT)) +" ] ";
LOG_INFO_SINGLE::os[0] = &std::cout;
LOG_DEBUG::prefix = "[DEBUG ] ";
LOG_DEBUG::prefix_c= "[DEBUG ] ";
LOG_DEBUG::os[0] = &std::cout;
LOG_VERBOSE::prefix = "[VERBOSE] ";
LOG_VERBOSE::prefix_c= "[" + bg(BLACK,fg(CYAN, "VERBOSE", BRIGHT)) + "] ";
LOG_VERBOSE::os[0] = &std::cout;
if (LibLSS::QUIET_CONSOLE_START)
Console::instance().setVerboseLevel<LOG_ERROR>();
}
RegisterStaticInit reg(initializeConsole, 0);
}
AUTO_REGISTRATOR_IMPL(LogTraits);