MEL
Microthread & Execution library
logger.h
Go to the documentation of this file.
1 #pragma once
2 #include <MelLibType.h>
3 #ifdef USE_SPDLOG
4 #include <spdlog/spdlog.h>
5 #else
6 #include <iostream>
7 #endif
8 #include <string>
9 
15 namespace mel
16 {
21  namespace text
22  {
23  namespace level
24  {
25  enum ELevel
26  {
27  debug = 0,
28  info = 1,
29  err = 2,
30  warn = 3,
31  critical = 4
32  };
33 #ifndef USE_SPDLOG
34  namespace _private
35  {
36  extern ELevel MEL_API sLevel;
37  }
38 #endif
39  } // namespace level
40  void MEL_API set_level( mel::text::level::ELevel level );
41  level::ELevel MEL_API get_level();
42  template <class... Args> void debug( std::string s, Args&&... args )
43  {
44 #ifdef USE_SPDLOG
45  spdlog::debug( std::move( s ), std::forward<Args>( args )... );
46 #else
47  if ( mel::text::level::_private::sLevel <= level::ELevel::debug )
48  // por poner algo por ahora
49  std::cout << "[debug] " << s << std::endl;
50 #endif
51  //@todo use format for C++20
52  }
53  template <class... Args> void info( std::string s, Args&&... args )
54  {
55 #ifdef USE_SPDLOG
56  spdlog::info( std::move( s ), std::forward<Args>( args )... );
57 #else
58  if ( mel::text::level::_private::sLevel <= level::ELevel::info )
59  // por poner algo por ahora
60  std::cout << "[info] " << s << std::endl;
61 #endif
62  //@todo use format for C++20
63  }
64  template <class... Args> void error( std::string s, Args&&... args )
65  {
66 #ifdef USE_SPDLOG
67  spdlog::error( std::move( s ), std::forward<Args>( args )... );
68 #else
69  if ( mel::text::level::_private::sLevel <= level::ELevel::err )
70  // por poner algo por ahora
71  std::cout << "[error] " << s << std::endl;
72 #endif
73  //@todo use format for C++20
74  }
75  template <class... Args> void warn( std::string s, Args&&... args )
76  {
77 #ifdef USE_SPDLOG
78  spdlog::warn( std::move( s ), std::forward<Args>( args )... );
79 #else
80  if ( mel::text::level::_private::sLevel <= level::ELevel::warn )
81  // por poner algo por ahora
82  std::cout << "[warn] " << s << std::endl;
83 #endif
84 
85  //@todo use format for C++20
86  }
87  template <class... Args> void critical( std::string s, Args&&... args )
88  {
89 #ifdef USE_SPDLOG
90  spdlog::critical( std::move( s ), std::forward<Args>( args )... );
91 #else
92  if ( mel::text::level::_private::sLevel <= level::ELevel::critical )
93  // por poner algo por ahora
94  std::cout << "[critical] " << s << std::endl;
95 #endif
96  //@todo use format for C++20
97  }
98  } // namespace text
99 } // namespace mel
Definition: Callback_Impl.h:11