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