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