JBLogger
Loading...
Searching...
No Matches
jblogger.h
Go to the documentation of this file.
1
11#ifndef JBLOGGER_H
12#define JBLOGGER_H
13
14#define ENABLE_STD_STRING
15
16#include <Arduino.h>
17#include <stdarg.h>
18#ifdef ENABLE_STD_STRING
19#include <string>
20#endif
21
22#ifdef __AVR__
23#include <avr/pgmspace.h>
24#endif
25
26#define JBLOGGER_VERSION "1.0.5"
27#define MAX_MESSAGE_LENGTH 128
28
38
46class JBLogger {
47public:
56 JBLogger(const char *moduleName, LogLevel level = LogLevel::LOG_LEVEL_WARNING,
57 Stream &stream = Serial, bool showLogLevel = true,
58 bool showModuleName = true, bool showTimestamp = true);
59
73 void log(LogLevel logLevel, bool writePrefix, bool writeLinefeed, const char *message, ...);
74
75#ifdef ENABLE_STD_STRING
89 void log(LogLevel logLevel, bool writePrefix, bool writeLinefeed, std::string& message, ...);
90#endif
91#ifdef ARDUINO
105 void log(LogLevel logLevel, bool writePrefix, bool writeLinefeed, String& message, ...);
106
120 void log(LogLevel logLevel, bool writePrefix, bool writeLinefeed, const __FlashStringHelper* message, ...);
121#endif
122
138 template<class T, typename... Args>
139 void error(T message, Args... args) {
140 log(LogLevel::LOG_LEVEL_ERROR, false, true, message, args...);
141 }
142
158 template<class T, typename... Args>
159 void warning(T message, Args... args) {
160 log(LogLevel::LOG_LEVEL_WARNING, false, true, message, args...);
161 }
162
178 template<class T, typename... Args>
179 void info(T message, Args... args) {
180 log(LogLevel::LOG_LEVEL_INFO, false, true, message, args...);
181 }
182
198 template<class T, typename... Args>
199 void debug(T message, Args... args) {
200 log(LogLevel::LOG_LEVEL_DEBUG, false, true, message, args...);
201 }
202
218 template<class T, typename... Args>
219 void trace(T message, Args... args) {
220 log(LogLevel::LOG_LEVEL_TRACE, false, true, message, args...);
221 }
222
234 void traceDump(const void* buffer, uint32_t size);
235
245 void traceHexDump(const void* buffer, uint32_t size);
246
255 void traceAsciiDump(const void* buffer, uint32_t size);
256
264 void traceBinaryDump(const void* buffer, uint32_t size);
265
274 void setOutput(Stream &stream);
275
278 Stream& getOutput();
279
288 void setLogLevel(LogLevel level);
289
293
302 void setShowLogLevel(bool value);
303
306 bool getShowLogLevel() const;
307
316 void setShowModuleName(bool value);
317
320 bool getShowModuleName() const;
321
333 void setShowTimestamp(bool value);
334
337 bool getShowTimestamp() const;
338
339private:
340 LogLevel _logLevel;
341 Stream &_output;
342 const char *_moduleName;
343 bool _showLogLevel = true;
344 bool _showModuleName = true;
345 bool _showTimestamp = true;
346
349 void _printPrefix(LogLevel logLevel) const;
350};
351
352#endif // JBLOGGER_H
Logging class.
Definition jblogger.h:46
void setShowLogLevel(bool value)
Specifies whether the log level should be displayed in log messages.
Definition jblogger.cpp:374
void info(T message, Args... args)
Log a message with the INFO log level.
Definition jblogger.h:179
void error(T message, Args... args)
Log a message with the ERROR log level.
Definition jblogger.h:139
void trace(T message, Args... args)
Log a message with the TRACE log level.
Definition jblogger.h:219
void setLogLevel(LogLevel level)
Sets the minimum log level for messages to be logged.
Definition jblogger.cpp:366
bool getShowTimestamp() const
Returns whether timestamps should be displayed in log messages.
Definition jblogger.cpp:394
void log(LogLevel logLevel, bool writePrefix, bool writeLinefeed, const char *message,...)
Logs a const char* message with the specified log level.
Definition jblogger.cpp:21
void setShowTimestamp(bool value)
Specifies whether timestamps should be displayed in log messages.
Definition jblogger.cpp:390
bool getShowModuleName() const
Returns whether the module name should be displayed in log messages.
Definition jblogger.cpp:386
void debug(T message, Args... args)
Log a message with the DEBUG log level.
Definition jblogger.h:199
void traceDump(const void *buffer, uint32_t size)
Log a hex and ASCII dump of a memory buffer with the TRACE log level.
Definition jblogger.cpp:82
LogLevel getLogLevel()
Returns the minimum log level for messages to be logged.
Definition jblogger.cpp:370
void traceAsciiDump(const void *buffer, uint32_t size)
Trace an ASCII dump of a memory buffer.
Definition jblogger.cpp:149
void setShowModuleName(bool value)
Specifies whether the module name should be displayed in log messages.
Definition jblogger.cpp:382
void setOutput(Stream &stream)
Allows you to specify the output stream for logging.
Definition jblogger.cpp:358
Stream & getOutput()
Returns the output stream for logging.
Definition jblogger.cpp:362
void warning(T message, Args... args)
Log a message with the WARNING log level.
Definition jblogger.h:159
void traceHexDump(const void *buffer, uint32_t size)
Log a hex dump of a memory buffer with the TRACE log level.
Definition jblogger.cpp:124
void traceBinaryDump(const void *buffer, uint32_t size)
Logs a a binary dump of a memory buffer with the TRACE log level.
Definition jblogger.cpp:329
bool getShowLogLevel() const
Returns whether the log level should be displayed in log messages.
Definition jblogger.cpp:378
LogLevel
Log levels.
Definition jblogger.h:30
@ LOG_LEVEL_DEBUG
Debug logging.
Definition jblogger.h:35
@ LOG_LEVEL_ERROR
Error logging.
Definition jblogger.h:32
@ LOG_LEVEL_WARNING
Warning logging.
Definition jblogger.h:33
@ LOG_LEVEL_NONE
No logging.
Definition jblogger.h:31
@ LOG_LEVEL_TRACE
Trace logging.
Definition jblogger.h:36
@ LOG_LEVEL_INFO
Info logging.
Definition jblogger.h:34