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