mFrame
載入中...
搜尋中...
無符合項目
Logger.h
1
7#ifndef MFRAME_FE1328F9_8A6A_47FB_97F9_EEC1924B39C5
8#define MFRAME_FE1328F9_8A6A_47FB_97F9_EEC1924B39C5
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../io/PrintStream.h"
16#include "./../lang/Object.h"
17
18//----------------------------------------------------------------------------------------
19
20/* ***************************************************************************************
21 * Namespace
22 */
23namespace ufm::util {
24 class Logger;
25} // namespace ufm::util
26
27/* ***************************************************************************************
28 * Class/Interface/Struct/Enum
29 */
31 public:
32 enum struct Level : uint8 {
33 NONE = 0,
34 SEVERE = 1,
35 WARNING = 2,
36 INFO = 3,
37 CONFIG = 4,
38 FINE = 5,
39 FINER = 6,
40 FINEST = 7
41 };
42 /* *************************************************************************************
43 * Variable
44 */
45 private:
46 ufm::io::PrintStream& vPrintStream;
47 const char* const vName;
48 Level vLevel;
49 Level vCurrentLevel;
50
51 /* *************************************************************************************
52 * Abstract Method
53 */
54
55 /* *************************************************************************************
56 * Construct Method
57 */
58 public:
65 Logger(ufm::io::PrintStream& printStream, const char* name = nullptr);
66
71 virtual ~Logger(void) override;
72
73 /* *************************************************************************************
74 * Operator Method
75 */
76 public:
85 inline operator ufm::io::PrintStream&() {
86 return this->vPrintStream;
87 }
88
97 inline operator ufm::lang::Appendable&() {
98 return this->vPrintStream;
99 }
100
101 /* *************************************************************************************
102 * Override -
103 */
104
105 /* *************************************************************************************
106 * Public Method
107 */
108 public:
117 Logger& log(Level level = Level::INFO, const char* message = "", bool finalize = true);
118
126 inline Logger& finest(const char* message = "", bool finalize = true) {
127 return this->log(Level::FINEST, message, finalize);
128 }
129
137 inline Logger& finer(const char* message = "", bool finalize = true) {
138 return this->log(Level::FINER, message, finalize);
139 }
140
148 inline Logger& fine(const char* message = "", bool finalize = true) {
149 return this->log(Level::FINE, message, finalize);
150 }
151
159 inline Logger& config(const char* message = "", bool finalize = true) {
160 return this->log(Level::CONFIG, message, finalize);
161 }
162
170 inline Logger& info(const char* message = "", bool finalize = true) {
171 return this->log(Level::INFO, message, finalize);
172 }
173
181 inline Logger& warning(const char* message = "", bool finalize = true) {
182 return this->log(Level::WARNING, message, finalize);
183 }
184
192 inline Logger& severe(const char* message = "", bool finalize = true) {
193 return this->log(Level::SEVERE, message, finalize);
194 }
195
205
211 inline Level getLevel(void) const {
212 return this->vLevel;
213 }
214
220 inline const char* getName(void) const {
221 return this->vName;
222 }
223
232 inline Logger& append(bool b) {
233 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << b;
234 return *this;
235 }
236
245 inline Logger& append(char c) {
246 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << c;
247 return *this;
248 }
249
258 inline Logger& append(double d) {
259 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << d;
260 return *this;
261 }
262
271 inline Logger& append(float f) {
272 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << f;
273 return *this;
274 }
275
284 inline Logger& append(int i) {
285 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << i;
286 return *this;
287 }
288
297 inline Logger& append(const char* str) {
298 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << str;
299 return *this;
300 }
301
312 inline Logger& append(const ufm::lang::Strings& str) {
313 if (this->vLevel >= this->vCurrentLevel) this->vPrintStream << str;
314
315 return *this;
316 }
317
329 Logger& format(const char* format, ...);
330
340
341 /* *************************************************************************************
342 * Protected Method
343 */
344
345 /* *************************************************************************************
346 * Private Method
347 */
348
349 /* *************************************************************************************
350 * Static Variable
351 */
352
353 /* *************************************************************************************
354 * Static Method
355 */
356};
357
358/* ***************************************************************************************
359 * End of file
360 */
361
362#endif /* MFRAME_FE1328F9_8A6A_47FB_97F9_EEC1924B39C5 */
格式化輸出串流
Definition PrintStream.h:43
物件基底類別
Definition Object.h:63
字串類別,提供字串操作和記憶體管理功能
Definition Strings.h:33
Definition Logger.h:30
Logger & append(char c)
追加字元日誌訊息。
Definition Logger.h:245
Logger & append(bool b)
追加布林值日誌訊息。
Definition Logger.h:232
Logger & info(const char *message="", bool finalize=true)
記錄一條資訊日誌
Definition Logger.h:170
Logger & finer(const char *message="", bool finalize=true)
記錄一條更詳細資訊日誌
Definition Logger.h:137
virtual ~Logger(void) override
Destroy the object.
Logger & append(int i)
追加整數日誌訊息。
Definition Logger.h:284
Logger & append(double d)
追加 double 浮點數日誌訊息。
Definition Logger.h:258
Logger & warning(const char *message="", bool finalize=true)
記錄一條警告日誌
Definition Logger.h:181
Logger & format(const char *format,...)
追加一條格式化日誌消息
Logger & severe(const char *message="", bool finalize=true)
記錄一條嚴重錯誤日誌
Definition Logger.h:192
Logger & setLevel(Level level)
設定 Logger 的日誌等級
Level
Definition Logger.h:32
@ FINER
更詳細資訊
@ FINEST
最詳細資訊
Logger & append(const char *str)
追加 C 字串日誌訊息。
Definition Logger.h:297
Logger & append(const ufm::lang::Strings &str)
追加一條日誌消息(字串物件)
Definition Logger.h:312
Logger & finest(const char *message="", bool finalize=true)
記錄一條最詳細資訊日誌
Definition Logger.h:126
const char * getName(void) const
取得 Logger 名稱。
Definition Logger.h:220
Logger(ufm::io::PrintStream &printStream, const char *name=nullptr)
Construct a new Logger object.
Logger & log(Level level=Level::INFO, const char *message="", bool finalize=true)
開始記錄一條新日誌
Logger & fine(const char *message="", bool finalize=true)
記錄一條詳細資訊日誌
Definition Logger.h:148
Level getLevel(void) const
取得目前 Logger 的日誌等級。
Definition Logger.h:211
Logger & append(float f)
追加 float 浮點數日誌訊息。
Definition Logger.h:271
Logger & config(const char *message="", bool finalize=true)
記錄一條配置日誌
Definition Logger.h:159
Logger & finalize(void)
結束當前日誌並強制輸出緩衝內容
Definition Iterable.h:28
資料附加介面 (Appendable)
Definition Appendable.h:43