Scarab  v2.4.2
Project 8 C++ Utility Library
Classes | Namespaces | Macros
logger.hh File Reference

Contains the logger class and macros, based on Kasper's KLogger class. More...

#include "macros.hh"
#include <cstring>
#include <iostream>
#include <sstream>
Include dependency graph for logger.hh:

Go to the source code of this file.

Classes

class  logger
 
struct  logger::Location
 

Namespaces

 scarab
 

Macros

#define LOGGER_UTILITY_MACROS_
 
#define va_num_args(...)   va_num_args_impl(__VA_ARGS__, 5,4,3,2,1)
 
#define va_num_args_impl(_1, _2, _3, _4, _5, N, ...)   N
 
#define macro_dispatcher(func, ...)   macro_dispatcher_(func, va_num_args(__VA_ARGS__))
 
#define macro_dispatcher_(func, nargs)   macro_dispatcher__(func, nargs)
 
#define macro_dispatcher__(func, nargs)   func ## nargs
 
#define COLOR_NORMAL   "0"
 
#define COLOR_BRIGHT   "1"
 
#define COLOR_FOREGROUND_RED   "31"
 
#define COLOR_FOREGROUND_GREEN   "32"
 
#define COLOR_FOREGROUND_YELLOW   "33"
 
#define COLOR_FOREGROUND_BLUE   "34"
 
#define COLOR_FOREGROUND_CYAN   "36"
 
#define COLOR_FOREGROUND_WHITE   "37"
 
#define COLOR_PREFIX   "\033["
 
#define COLOR_SUFFIX   "m"
 
#define COLOR_SEPARATOR   ";"
 
#define __DEFAULT_LOGGER   scarab::logger::GetRootLogger()
 
#define __LOG_LOCATION   scarab::logger::Location(__FILE__, __FUNC__, __LINE__)
 
#define __LOG_LOG_4(I, L, M, O)
 
#define __LOG_LOG_3(I, L, M)   __LOG_LOG_4(I,L,M,false)
 
#define __LOG_LOG_2(L, M)   __LOG_LOG_4(__DEFAULT_LOGGER,L,M,false)
 
#define __LOG_LOG_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,false)
 
#define __LOG_TRACE_2(I, M)   __LOG_LOG_4(I,Trace,M,false)
 
#define __LOG_TRACE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Trace,M,false)
 
#define __LOG_DEBUG_2(I, M)   __LOG_LOG_4(I,Debug,M,false)
 
#define __LOG_DEBUG_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,false)
 
#define __LOG_INFO_2(I, M)   __LOG_LOG_4(I,Info,M,false)
 
#define __LOG_INFO_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Info,M,false)
 
#define __LOG_PROG_2(I, M)   __LOG_LOG_4(I,Prog,M,false)
 
#define __LOG_PROG_1(M)   __LOG_LOG_4(__KTDEFAULT_LOGGER,Prog,M,false)
 
#define __LOG_WARN_2(I, M)   __LOG_LOG_4(I,Warn,M,false)
 
#define __LOG_WARN_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Warn,M,false)
 
#define __LOG_ERROR_2(I, M)   __LOG_LOG_4(I,Error,M,false)
 
#define __LOG_ERROR_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Error,M,false)
 
#define __LOG_FATAL_2(I, M)   __LOG_LOG_4(I,Fatal,M,false)
 
#define __LOG_FATAL_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Fatal,M,false)
 
#define __LOG_ASSERT_3(I, C, M)   if (!(C)) { __LOG_ERROR_2(I,M) }
 
#define __LOG_ASSERT_2(C, M)   __LOG_ASSERT_3(__DEFAULT_LOGGER,C,M)
 
#define __LOG_LOG_ONCE_3(I, L, M)   __LOG_LOG_4(I,L,M,true)
 
#define __LOG_LOG_ONCE_2(L, M)   __LOG_LOG_4(__DEFAULT_LOGGER,L,M,true)
 
#define __LOG_LOG_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,true)
 
#define __LOG_TRACE_ONCE_2(I, M)   __LOG_LOG_4(I,Trace,M,true)
 
#define __LOG_TRACE_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Trace,M,true)
 
#define __LOG_DEBUG_ONCE_2(I, M)   __LOG_LOG_4(I,Debug,M,true)
 
#define __LOG_DEBUG_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,true)
 
#define __LOG_INFO_ONCE_2(I, M)   __LOG_LOG_4(I,Info,M,true)
 
#define __LOG_INFO_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Info,M,true)
 
#define __LOG_WARN_ONCE_2(I, M)   __LOG_LOG_4(I,Warn,M,true)
 
#define __LOG_WARN_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Warn,M,true)
 
#define __LOG_ERROR_ONCE_2(I, M)   __LOG_LOG_4(I,Error,M,true)
 
#define __LOG_ERROR_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Error,M,true)
 
#define __LOG_FATAL_ONCE_2(I, M)   __LOG_LOG_4(I,Fatal,M,true)
 
#define __LOG_FATAL_ONCE_1(M)   __LOG_LOG_4(__DEFAULT_LOGGER,Fatal,M,true)
 
#define LOGGER(I, K)   static scarab::logger I(K);
 
#define LOG(...)   macro_dispatcher(__LOG_LOG_, __VA_ARGS__)(__VA_ARGS__)
 
#define LTRACE(...)   macro_dispatcher(__LOG_TRACE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LDEBUG(...)   macro_dispatcher(__LOG_DEBUG_, __VA_ARGS__)(__VA_ARGS__)
 
#define LINFO(...)   macro_dispatcher(__LOG_INFO_, __VA_ARGS__)(__VA_ARGS__)
 
#define LPROG(...)   macro_dispatcher(__LOG_PROG_, __VA_ARGS__)(__VA_ARGS__)
 
#define LWARN(...)   macro_dispatcher(__LOG_WARN_, __VA_ARGS__)(__VA_ARGS__)
 
#define LERROR(...)   macro_dispatcher(__LOG_ERROR_, __VA_ARGS__)(__VA_ARGS__)
 
#define LFATAL(...)   macro_dispatcher(__LOG_FATAL_, __VA_ARGS__)(__VA_ARGS__)
 
#define LASSERT(...)   macro_dispatcher(__LOG_ASSERT_, __VA_ARGS__)(__VA_ARGS__)
 
#define LOG_ONCE(...)   macro_dispatcher(__LOG_LOG_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LTRACE_ONCE(...)   macro_dispatcher(__LOG_TRACE_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LDEBUG_ONCE(...)   macro_dispatcher(__LOG_DEBUG_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LINFO_ONCE(...)   macro_dispatcher(__LOG_INFO_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LPROG_ONCE(...)   macro_dispatcher(__LOG_PROG_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LWARN_ONCE(...)   macro_dispatcher(__LOG_WARN_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LERROR_ONCE(...)   macro_dispatcher(__LOG_ERROR_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 
#define LFATAL_ONCE(...)   macro_dispatcher(__LOG_FATAL_ONCE_, __VA_ARGS__)(__VA_ARGS__)
 

Detailed Description

Contains the logger class and macros, based on Kasper's KLogger class.

Date
Created on: 18.11.2011
Author
Marco Haag marco.nosp@m..haa.nosp@m.g@kit.nosp@m..edu

Definition in file logger.hh.

Macro Definition Documentation

◆ __DEFAULT_LOGGER

#define __DEFAULT_LOGGER   scarab::logger::GetRootLogger()

Definition at line 277 of file logger.hh.

◆ __LOG_ASSERT_2

#define __LOG_ASSERT_2 (   C,
 
)    __LOG_ASSERT_3(__DEFAULT_LOGGER,C,M)

Definition at line 324 of file logger.hh.

◆ __LOG_ASSERT_3

#define __LOG_ASSERT_3 (   I,
  C,
 
)    if (!(C)) { __LOG_ERROR_2(I,M) }

Definition at line 323 of file logger.hh.

◆ __LOG_DEBUG_1

#define __LOG_DEBUG_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,false)

Definition at line 306 of file logger.hh.

◆ __LOG_DEBUG_2

#define __LOG_DEBUG_2 (   I,
 
)    __LOG_LOG_4(I,Debug,M,false)

Definition at line 305 of file logger.hh.

◆ __LOG_DEBUG_ONCE_1

#define __LOG_DEBUG_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,true)

Definition at line 335 of file logger.hh.

◆ __LOG_DEBUG_ONCE_2

#define __LOG_DEBUG_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Debug,M,true)

Definition at line 334 of file logger.hh.

◆ __LOG_ERROR_1

#define __LOG_ERROR_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Error,M,false)

Definition at line 318 of file logger.hh.

◆ __LOG_ERROR_2

#define __LOG_ERROR_2 (   I,
 
)    __LOG_LOG_4(I,Error,M,false)

Definition at line 317 of file logger.hh.

◆ __LOG_ERROR_ONCE_1

#define __LOG_ERROR_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Error,M,true)

Definition at line 344 of file logger.hh.

◆ __LOG_ERROR_ONCE_2

#define __LOG_ERROR_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Error,M,true)

Definition at line 343 of file logger.hh.

◆ __LOG_FATAL_1

#define __LOG_FATAL_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Fatal,M,false)

Definition at line 321 of file logger.hh.

◆ __LOG_FATAL_2

#define __LOG_FATAL_2 (   I,
 
)    __LOG_LOG_4(I,Fatal,M,false)

Definition at line 320 of file logger.hh.

◆ __LOG_FATAL_ONCE_1

#define __LOG_FATAL_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Fatal,M,true)

Definition at line 347 of file logger.hh.

◆ __LOG_FATAL_ONCE_2

#define __LOG_FATAL_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Fatal,M,true)

Definition at line 346 of file logger.hh.

◆ __LOG_INFO_1

#define __LOG_INFO_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Info,M,false)

Definition at line 309 of file logger.hh.

◆ __LOG_INFO_2

#define __LOG_INFO_2 (   I,
 
)    __LOG_LOG_4(I,Info,M,false)

Definition at line 308 of file logger.hh.

◆ __LOG_INFO_ONCE_1

#define __LOG_INFO_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Info,M,true)

Definition at line 338 of file logger.hh.

◆ __LOG_INFO_ONCE_2

#define __LOG_INFO_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Info,M,true)

Definition at line 337 of file logger.hh.

◆ __LOG_LOCATION

#define __LOG_LOCATION   scarab::logger::Location(__FILE__, __FUNC__, __LINE__)

Definition at line 279 of file logger.hh.

◆ __LOG_LOG_1

#define __LOG_LOG_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,false)

Definition at line 300 of file logger.hh.

◆ __LOG_LOG_2

#define __LOG_LOG_2 (   L,
 
)    __LOG_LOG_4(__DEFAULT_LOGGER,L,M,false)

Definition at line 299 of file logger.hh.

◆ __LOG_LOG_3

#define __LOG_LOG_3 (   I,
  L,
 
)    __LOG_LOG_4(I,L,M,false)

Definition at line 298 of file logger.hh.

◆ __LOG_LOG_4

#define __LOG_LOG_4 (   I,
  L,
  M,
 
)
Value:
{ \
if (I.IsLevelEnabled(scarab::logger::e##L)) { \
static bool _sLoggerMarker = false; \
if (!O || !_sLoggerMarker) { \
_sLoggerMarker = true; \
std::ostringstream stream; stream << M; \
I.Log(scarab::logger::e##L, stream.str(), __LOG_LOCATION); \
} \
} \
}
#define __LOG_LOCATION
Definition: logger.hh:279

Definition at line 281 of file logger.hh.

◆ __LOG_LOG_ONCE_1

#define __LOG_LOG_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Debug,M,true)

Definition at line 329 of file logger.hh.

◆ __LOG_LOG_ONCE_2

#define __LOG_LOG_ONCE_2 (   L,
 
)    __LOG_LOG_4(__DEFAULT_LOGGER,L,M,true)

Definition at line 328 of file logger.hh.

◆ __LOG_LOG_ONCE_3

#define __LOG_LOG_ONCE_3 (   I,
  L,
 
)    __LOG_LOG_4(I,L,M,true)

Definition at line 327 of file logger.hh.

◆ __LOG_PROG_1

#define __LOG_PROG_1 (   M)    __LOG_LOG_4(__KTDEFAULT_LOGGER,Prog,M,false)

Definition at line 312 of file logger.hh.

◆ __LOG_PROG_2

#define __LOG_PROG_2 (   I,
 
)    __LOG_LOG_4(I,Prog,M,false)

Definition at line 311 of file logger.hh.

◆ __LOG_TRACE_1

#define __LOG_TRACE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Trace,M,false)

Definition at line 303 of file logger.hh.

◆ __LOG_TRACE_2

#define __LOG_TRACE_2 (   I,
 
)    __LOG_LOG_4(I,Trace,M,false)

Definition at line 302 of file logger.hh.

◆ __LOG_TRACE_ONCE_1

#define __LOG_TRACE_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Trace,M,true)

Definition at line 332 of file logger.hh.

◆ __LOG_TRACE_ONCE_2

#define __LOG_TRACE_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Trace,M,true)

Definition at line 331 of file logger.hh.

◆ __LOG_WARN_1

#define __LOG_WARN_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Warn,M,false)

Definition at line 315 of file logger.hh.

◆ __LOG_WARN_2

#define __LOG_WARN_2 (   I,
 
)    __LOG_LOG_4(I,Warn,M,false)

Definition at line 314 of file logger.hh.

◆ __LOG_WARN_ONCE_1

#define __LOG_WARN_ONCE_1 (   M)    __LOG_LOG_4(__DEFAULT_LOGGER,Warn,M,true)

Definition at line 341 of file logger.hh.

◆ __LOG_WARN_ONCE_2

#define __LOG_WARN_ONCE_2 (   I,
 
)    __LOG_LOG_4(I,Warn,M,true)

Definition at line 340 of file logger.hh.

◆ COLOR_BRIGHT

#define COLOR_BRIGHT   "1"

Definition at line 40 of file logger.hh.

◆ COLOR_FOREGROUND_BLUE

#define COLOR_FOREGROUND_BLUE   "34"

Definition at line 44 of file logger.hh.

◆ COLOR_FOREGROUND_CYAN

#define COLOR_FOREGROUND_CYAN   "36"

Definition at line 45 of file logger.hh.

◆ COLOR_FOREGROUND_GREEN

#define COLOR_FOREGROUND_GREEN   "32"

Definition at line 42 of file logger.hh.

◆ COLOR_FOREGROUND_RED

#define COLOR_FOREGROUND_RED   "31"

Definition at line 41 of file logger.hh.

◆ COLOR_FOREGROUND_WHITE

#define COLOR_FOREGROUND_WHITE   "37"

Definition at line 46 of file logger.hh.

◆ COLOR_FOREGROUND_YELLOW

#define COLOR_FOREGROUND_YELLOW   "33"

Definition at line 43 of file logger.hh.

◆ COLOR_NORMAL

#define COLOR_NORMAL   "0"

Definition at line 39 of file logger.hh.

◆ COLOR_PREFIX

#define COLOR_PREFIX   "\033["

Definition at line 47 of file logger.hh.

◆ COLOR_SEPARATOR

#define COLOR_SEPARATOR   ";"

Definition at line 49 of file logger.hh.

◆ COLOR_SUFFIX

#define COLOR_SUFFIX   "m"

Definition at line 48 of file logger.hh.

◆ LASSERT

#define LASSERT (   ...)    macro_dispatcher(__LOG_ASSERT_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 367 of file logger.hh.

◆ LDEBUG

#define LDEBUG (   ...)    macro_dispatcher(__LOG_DEBUG_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 360 of file logger.hh.

◆ LDEBUG_ONCE

#define LDEBUG_ONCE (   ...)    macro_dispatcher(__LOG_DEBUG_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 375 of file logger.hh.

◆ LERROR

#define LERROR (   ...)    macro_dispatcher(__LOG_ERROR_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 365 of file logger.hh.

◆ LERROR_ONCE

#define LERROR_ONCE (   ...)    macro_dispatcher(__LOG_ERROR_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 380 of file logger.hh.

◆ LFATAL

#define LFATAL (   ...)    macro_dispatcher(__LOG_FATAL_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 366 of file logger.hh.

◆ LFATAL_ONCE

#define LFATAL_ONCE (   ...)    macro_dispatcher(__LOG_FATAL_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 381 of file logger.hh.

◆ LINFO

#define LINFO (   ...)    macro_dispatcher(__LOG_INFO_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 362 of file logger.hh.

◆ LINFO_ONCE

#define LINFO_ONCE (   ...)    macro_dispatcher(__LOG_INFO_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 377 of file logger.hh.

◆ LOG

#define LOG (   ...)    macro_dispatcher(__LOG_LOG_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 354 of file logger.hh.

◆ LOG_ONCE

#define LOG_ONCE (   ...)    macro_dispatcher(__LOG_LOG_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 369 of file logger.hh.

◆ LOGGER

#define LOGGER (   I,
 
)    static scarab::logger I(K);

Definition at line 352 of file logger.hh.

◆ LOGGER_UTILITY_MACROS_

#define LOGGER_UTILITY_MACROS_

Definition at line 25 of file logger.hh.

◆ LPROG

#define LPROG (   ...)    macro_dispatcher(__LOG_PROG_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 363 of file logger.hh.

◆ LPROG_ONCE

#define LPROG_ONCE (   ...)    macro_dispatcher(__LOG_PROG_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 378 of file logger.hh.

◆ LTRACE

#define LTRACE (   ...)    macro_dispatcher(__LOG_TRACE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 359 of file logger.hh.

◆ LTRACE_ONCE

#define LTRACE_ONCE (   ...)    macro_dispatcher(__LOG_TRACE_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 374 of file logger.hh.

◆ LWARN

#define LWARN (   ...)    macro_dispatcher(__LOG_WARN_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 364 of file logger.hh.

◆ LWARN_ONCE

#define LWARN_ONCE (   ...)    macro_dispatcher(__LOG_WARN_ONCE_, __VA_ARGS__)(__VA_ARGS__)

Definition at line 379 of file logger.hh.

◆ macro_dispatcher

#define macro_dispatcher (   func,
  ... 
)    macro_dispatcher_(func, va_num_args(__VA_ARGS__))

Definition at line 30 of file logger.hh.

◆ macro_dispatcher_

#define macro_dispatcher_ (   func,
  nargs 
)    macro_dispatcher__(func, nargs)

Definition at line 31 of file logger.hh.

◆ macro_dispatcher__

#define macro_dispatcher__ (   func,
  nargs 
)    func ## nargs

Definition at line 32 of file logger.hh.

◆ va_num_args

#define va_num_args (   ...)    va_num_args_impl(__VA_ARGS__, 5,4,3,2,1)

Definition at line 27 of file logger.hh.

◆ va_num_args_impl

#define va_num_args_impl (   _1,
  _2,
  _3,
  _4,
  _5,
  N,
  ... 
)    N

Definition at line 28 of file logger.hh.