KanoopCommonQt 2.1.1
Kanoop foundational Qt utility library
Loading...
Searching...
No Matches
loggingbaseclass.h
1/**
2 * @brief A non-QObject mixin that provides structured logging methods to any class.
3 */
4#ifndef LOGGINGBASECLASS_H
5#define LOGGINGBASECLASS_H
6
7#include <Kanoop/logcategory.h>
8#include <Kanoop/log.h>
9#include <Kanoop/logconsumer.h>
10#include <Kanoop/kanoopcommon.h>
11
12/** @brief Convenience macro that logs a warning for an unimplemented method. */
13#define UNIMPLEMENTED logText(LVL_WARNING, QString("---------------- %1 UNIMPLEMENTED ----------------").arg(__FUNCTION__));
14
15/**
16 * @brief Mixin base class providing categorized logging at four nesting levels.
17 *
18 * Classes that inherit LoggingBaseClass gain logText() and logHex() methods that
19 * automatically tag messages with the registered log category. The category can
20 * be refined into up to three sub-levels (LVL1, LVL2, LVL3) for more granular
21 * filtering.
22 */
23class KANOOP_EXPORT LoggingBaseClass
24{
25public:
26 /**
27 * @brief Construct with an optional log category.
28 * @param category Base log category (default: uncategorized)
29 */
31
32 /**
33 * @brief Construct with a category name string.
34 * @param category Category name string
35 */
36 LoggingBaseClass(const QString& category);
37
38 /**
39 * @brief Return the base log category.
40 * @return Base LogCategory
41 */
42 Log::LogCategory logCategory() const { return _baseCategory; }
43
44protected:
45 /** @brief Return the base (level 0) log category.
46 * @return Base log category. */
47 Log::LogCategory LVL0() const { return _baseCategory; }
48 /** @brief Return the level-1 sub-category.
49 * @return Level-1 log category. */
50 Log::LogCategory LVL1() const { return _level1; }
51 /** @brief Return the level-2 sub-category.
52 * @return Level-2 log category. */
53 Log::LogCategory LVL2() const { return _level2; }
54 /** @brief Return the level-3 sub-category.
55 * @return Level-3 log category. */
56 Log::LogCategory LVL3() const { return _level3; }
57
58 /**
59 * @brief Write a text message to the system logger using the base category.
60 * @param file Source filename (use __FILE__ / LVL_* macros)
61 * @param lineNumber Source line number
62 * @param level Severity level
63 * @param text Message text
64 */
65 void logText(const char* file, int lineNumber, Log::LogLevel level, const QString& text) const;
66
67 /**
68 * @brief Write a text message to the system logger using an explicit category.
69 * @param file Source filename
70 * @param lineNumber Source line number
71 * @param level Severity level
72 * @param category Explicit log category
73 * @param text Message text
74 */
75 void logText(const char* file, int lineNumber, Log::LogLevel level, const Log::LogCategory& category, const QString& text) const;
76
77 /**
78 * @brief Write a hex dump to the system logger.
79 * @param file Source filename
80 * @param lineNumber Source line number
81 * @param level Severity level
82 * @param data Bytes to dump
83 * @param tag Optional label
84 */
85 void logHex(const char* file, int lineNumber, Log::LogLevel level, const QByteArray& data, const QString& tag = QString()) const;
86
87 /**
88 * @brief Write a hex dump to the system logger using an explicit category.
89 * @param file Source filename
90 * @param lineNumber Source line number
91 * @param level Severity level
92 * @param category Explicit log category
93 * @param data Bytes to dump
94 * @param tag Optional label
95 */
96 void logHex(const char* file, int lineNumber, Log::LogLevel level, const Log::LogCategory& category, const QByteArray& data, const QString& tag = QString()) const;
97
98 /**
99 * @brief Register an external log consumer to receive entries from this class.
100 * @param consumer Consumer to add
101 */
103
104 /**
105 * @brief Remove a previously added log consumer.
106 * @param consumer Consumer to remove
107 */
109
110private:
111 /** @brief Shared initialisation for all constructors. */
112 void commonInit();
113
114 Log::LogCategory _baseCategory;
115 Log::LogCategory _level1;
116 Log::LogCategory _level2;
117 Log::LogCategory _level3;
118};
119
120#endif // LOGGINGBASECLASS_H
A QObject-based sink that receives log entries from the logging system.
Definition logconsumer.h:21
A named logging category with an associated minimum log level.
Definition logcategory.h:34
Mixin base class providing categorized logging at four nesting levels.
LoggingBaseClass(const QString &category)
Construct with a category name string.
Log::LogCategory LVL3() const
Return the level-3 sub-category.
void logText(const char *file, int lineNumber, Log::LogLevel level, const QString &text) const
Write a text message to the system logger using the base category.
LoggingBaseClass(const Log::LogCategory &category=Log::LogCategory())
Construct with an optional log category.
void logHex(const char *file, int lineNumber, Log::LogLevel level, const QByteArray &data, const QString &tag=QString()) const
Write a hex dump to the system logger.
Log::LogCategory LVL2() const
Return the level-2 sub-category.
Log::LogCategory logCategory() const
Return the base log category.
void logText(const char *file, int lineNumber, Log::LogLevel level, const Log::LogCategory &category, const QString &text) const
Write a text message to the system logger using an explicit category.
void logHex(const char *file, int lineNumber, Log::LogLevel level, const Log::LogCategory &category, const QByteArray &data, const QString &tag=QString()) const
Write a hex dump to the system logger using an explicit category.
void addLogConsumer(LogConsumer *consumer)
Register an external log consumer to receive entries from this class.
Log::LogCategory LVL0() const
Return the base (level 0) log category.
void removeLogConsumer(LogConsumer *consumer)
Remove a previously added log consumer.
Log::LogCategory LVL1() const
Return the level-1 sub-category.
LogLevel
Severity levels for log messages, ordered from most to least critical.