MSCEqF 1.0
Multi State Constraint Equivariant Filter for visual inertial navigation
Loading...
Searching...
No Matches
logger.hpp
1// Copyright (C) 2023 Alessandro Fornasier.
2// Control of Networked Systems, University of Klagenfurt, Austria.
3//
4// All rights reserved.
5//
6// This software is licensed under the terms of the BSD-2-Clause-License with
7// no commercial use allowed, the full terms of which are made available
8// in the LICENSE file. No license in patents is granted.
9//
10// You can contact the authors at <alessandro.fornasier@ieee.org>
11
12#ifndef LOGGER_HPP_
13#define LOGGER_HPP_
14
15#include <iostream>
16#include <memory>
17
18namespace utils
19{
20template <class S, class C, typename = void>
21struct is_streamable : ::std::false_type
22{
23};
24
25template <class S, class C>
26struct is_streamable<S, C, decltype(void(std::declval<S&>() << std::declval<C const&>()))> : ::std::true_type
27{
28};
29
30enum class LoggerLevel
31{
32 FULL,
33 INFO,
34 WARN,
35 ERR,
36 INACTIVE,
37};
38
43class Logger
44{
45 public:
51 static const LoggerLevel& getlevel() { return level_; }
52
58 static void setLevel(const LoggerLevel& level) { level_ = level; }
59
66 template <typename T>
67 static void info(const T& msg)
68 {
70 if (level_ == LoggerLevel::INFO || level_ == LoggerLevel::FULL)
71 {
72 std::cout << "[ INFO]: " << msg << '.' << std::endl;
73 }
74 }
75
82 template <typename T>
83 static void err(const T& msg)
84 {
86 if (level_ == LoggerLevel::INFO || level_ == LoggerLevel::WARN || level_ == LoggerLevel::ERR ||
87 level_ == LoggerLevel::FULL)
88 {
89 std::cout << "\033[31m[ ERROR]: " << msg << ".\033[0m" << std::endl;
90 }
91 }
92
99 template <typename T>
100 static void warn(const T& msg)
101 {
103 if (level_ == LoggerLevel::INFO || level_ == LoggerLevel::WARN || level_ == LoggerLevel::FULL)
104 {
105 std::cout << "\033[33m[ WARNING]: " << msg << ".\033[0m" << std::endl;
106 }
107 }
108
115 template <typename T>
116 static void debug(const T& msg)
117 {
119 if (level_ == LoggerLevel::FULL)
120 {
121 std::cout << "\033[34m[ DEBUG]: " << msg << ".\033[0m" << std::endl;
122 }
123 }
124
125 private:
126 static inline LoggerLevel level_ = LoggerLevel::INFO;
127};
128
129} // namespace utils
130
131#endif // LOGGER_HPP_
Logger.
Definition logger.hpp:44
static void warn(const T &msg)
Format a warn message and log it in yellow.
Definition logger.hpp:100
static const LoggerLevel & getlevel()
Get the logger level (see LoggerLevel)
Definition logger.hpp:51
static void debug(const T &msg)
Format a debug message and log it in blue.
Definition logger.hpp:116
static void err(const T &msg)
Format a error message and log it in red.
Definition logger.hpp:83
static void info(const T &msg)
Format a info message and log it in white.
Definition logger.hpp:67
static void setLevel(const LoggerLevel &level)
Set the logger level (see LoggerLevel)
Definition logger.hpp:58
Definition logger.hpp:22