diff options
Diffstat (limited to 'src/multilog.h')
| -rw-r--r-- | src/multilog.h | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/src/multilog.h b/src/multilog.h index 30ad8d7..7e4a357 100644 --- a/src/multilog.h +++ b/src/multilog.h | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | #include "ringlist.h" | 8 | #include "ringlist.h" |
| 9 | #include "linkedlist.h" | 9 | #include "linkedlist.h" |
| 10 | #include "singleton.h" | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * Calls the DetailLog function but includes pre-processor macros to fill in | 13 | * Calls the DetailLog function but includes pre-processor macros to fill in |
| @@ -19,6 +20,8 @@ | |||
| 19 | */ | 20 | */ |
| 20 | #define LineLog( LEVEL, FORMAT, ...) DetailLog( LEVEL, __FILE__, __LINE__, __PRETTY_FUNCTION__, FORMAT, ##__VA_ARGS__ ) | 21 | #define LineLog( LEVEL, FORMAT, ...) DetailLog( LEVEL, __FILE__, __LINE__, __PRETTY_FUNCTION__, FORMAT, ##__VA_ARGS__ ) |
| 21 | 22 | ||
| 23 | #define MultiLineLog( LEVEL, FORMAT, ...) MultiLog::getInstance().DetailLog( LEVEL, __FILE__, __LINE__, __PRETTY_FUNCTION__, FORMAT, ##__VA_ARGS__ ) | ||
| 24 | |||
| 22 | /** MultiLog keeps track of logfile info in a myriad of varieties, and is | 25 | /** MultiLog keeps track of logfile info in a myriad of varieties, and is |
| 23 | * easily configurable between them all. It allows output to the standard | 26 | * easily configurable between them all. It allows output to the standard |
| 24 | * output, error output, files, networks, and streams, which includes memory | 27 | * output, error output, files, networks, and streams, which includes memory |
| @@ -27,8 +30,9 @@ | |||
| 27 | * the log. Instead of instantiating a new copy, call the getLog method. | 30 | * the log. Instead of instantiating a new copy, call the getLog method. |
| 28 | *@author Mike Buland | 31 | *@author Mike Buland |
| 29 | */ | 32 | */ |
| 30 | class MultiLog | 33 | class MultiLog : public Singleton<MultiLog> |
| 31 | { | 34 | { |
| 35 | friend class Singleton<MultiLog>; | ||
| 32 | public: | 36 | public: |
| 33 | /** | 37 | /** |
| 34 | * Keeps track of a single log entry, in a standard format, that can be | 38 | * Keeps track of a single log entry, in a standard format, that can be |
| @@ -46,16 +50,16 @@ public: | |||
| 46 | char *lpText; /**< The text content of this log entry. */ | 50 | char *lpText; /**< The text content of this log entry. */ |
| 47 | } LogEntry; | 51 | } LogEntry; |
| 48 | 52 | ||
| 49 | private: | 53 | protected: |
| 50 | /** | 54 | /** |
| 51 | * Private constructor, this ensures that this is a singleton. | 55 | * Private constructor, this ensures that this is a singleton. |
| 52 | */ | 56 | */ |
| 53 | MultiLog(); | 57 | MultiLog(); |
| 54 | 58 | ||
| 55 | /** | 59 | /** |
| 56 | * The only instance of MultiLog ever. | 60 | * Destroy the multilog. |
| 57 | */ | 61 | */ |
| 58 | static MultiLog *singleLog; | 62 | ~MultiLog(); |
| 59 | 63 | ||
| 60 | /** | 64 | /** |
| 61 | * Append a new logentry to the log list, possibly pushing an old entry off. | 65 | * Append a new logentry to the log list, possibly pushing an old entry off. |
| @@ -79,11 +83,6 @@ private: | |||
| 79 | LinkedList *lChannel; | 83 | LinkedList *lChannel; |
| 80 | 84 | ||
| 81 | public: | 85 | public: |
| 82 | /** | ||
| 83 | * Destroy the multilog. | ||
| 84 | *@todo Why is this public? Does it need to be? | ||
| 85 | */ | ||
| 86 | ~MultiLog(); | ||
| 87 | 86 | ||
| 88 | /** Sends info to the logfile. | 87 | /** Sends info to the logfile. |
| 89 | *@param nLevel The type of data being logged (error, info, etc.) | 88 | *@param nLevel The type of data being logged (error, info, etc.) |
| @@ -106,20 +105,6 @@ public: | |||
| 106 | */ | 105 | */ |
| 107 | void DetailLog( int nLevel, const char *lpFile, int nLine, const char *lpFunction, const char *lpFormat, ...); | 106 | void DetailLog( int nLevel, const char *lpFile, int nLine, const char *lpFunction, const char *lpFormat, ...); |
| 108 | 107 | ||
| 109 | /** Gets a pointer to the only instantion of the MultiLog that can exist. | ||
| 110 | * If there is no instantion in existance, it creates one, so it's | ||
| 111 | * foolproof. | ||
| 112 | *@returns A pointer to the only MultiLog instantion. | ||
| 113 | *@author Mike Buland | ||
| 114 | */ | ||
| 115 | static MultiLog *getLog(); | ||
| 116 | |||
| 117 | /** Performs standard cleanup and deletes the only instantiation of MultiLog | ||
| 118 | * that can exist. This is just the same as delete and will nicely close | ||
| 119 | * all open logs. always call this when you are done with your MultiLog. | ||
| 120 | */ | ||
| 121 | static void cleanup(); | ||
| 122 | |||
| 123 | /** | 108 | /** |
| 124 | * Adds a logging channel to the MultiLog channel chain. Every added | 109 | * Adds a logging channel to the MultiLog channel chain. Every added |
| 125 | * channel will automatically receive a complete log of everything that | 110 | * channel will automatically receive a complete log of everything that |
