Pico-Arduino
PicoLogger.h
1 #pragma once
2 
3 #include "Stream.h"
4 
12 #ifndef PICO_LOG_LEVEL
13 #define PICO_LOG_LEVEL Error
14 #endif
15 
16 class PicoLogger {
17  public:
22  enum LogLevel {
23  Debug,
24  Info,
25  Warning,
26  Error
27  };
28 
29  PicoLogger(){}
30  ~PicoLogger(){}
31 
32  // activate the logging
33  virtual void begin(Stream& out, LogLevel level=PICO_LOG_LEVEL){
34  this->log_stream_ptr = &out;
35  this->log_level = level;
36  }
37 
38  // checks if the logging is active
39  virtual bool isLogging(LogLevel level = Info){
40  return log_stream_ptr!=nullptr && level >= log_level;
41  }
42 
43  virtual void error(const char *str, const char* str1=nullptr, const char* str2=nullptr){
44  log(Error, str, str1, str2);
45  }
46 
47  virtual void info(const char *str, const char* str1=nullptr, const char* str2=nullptr){
48  log(Info, str, str1, str2);
49  }
50 
51  virtual void warning(const char *str, const char* str1=nullptr, const char* str2=nullptr){
52  log(Warning, str, str1, str2);
53  }
54 
55  virtual void debug(const char *str, const char* str1=nullptr, const char* str2=nullptr){
56  log(Debug, str, str1, str2);
57  }
58 
59  // write an message to the log
60  virtual void log(LogLevel current_level, const char *str, const char* str1=nullptr, const char* str2=nullptr){
61  if (log_stream_ptr!=nullptr){
62  if (current_level >= log_level){
63  log_stream_ptr->print((char*)str);
64  if (str1!=nullptr){
65  log_stream_ptr->print(" ");
66  log_stream_ptr->print(str1);
67  }
68  if (str2!=nullptr){
69  log_stream_ptr->print(" ");
70  log_stream_ptr->print(str2);
71  }
72  log_stream_ptr->println();
73  log_stream_ptr->flush();
74  }
75  }
76  }
77 
78  const char* toStr(int value){
79  static char buffer[10];
80  itoa(value,buffer,10);
81  return (const char*)buffer;
82  }
83 
84 
85  protected:
86  Stream *log_stream_ptr;
87  LogLevel log_level;
88 
89 
90 };
91 
92 extern PicoLogger Logger; // Support for logging
93 
94 
95 
Definition: PicoLogger.h:16
LogLevel
Supported log levels. You can change the default log level with the help of the PICO_LOG_LEVEL define...
Definition: PicoLogger.h:22
Definition: Stream.h:51