summaryrefslogtreecommitdiff
path: root/src/multilog.h
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2006-05-03 06:49:30 +0000
committerMike Buland <eichlan@xagasoft.com>2006-05-03 06:49:30 +0000
commit96b00553a0ffe6bb34af6ad15e1cfc2bed67bd75 (patch)
treea930fe51f01a7400fe97b46db2fcfcdc1f2712da /src/multilog.h
parent33fef4a17290e7872293d8cc173bec826f24001c (diff)
downloadlibbu++-96b00553a0ffe6bb34af6ad15e1cfc2bed67bd75.tar.gz
libbu++-96b00553a0ffe6bb34af6ad15e1cfc2bed67bd75.tar.bz2
libbu++-96b00553a0ffe6bb34af6ad15e1cfc2bed67bd75.tar.xz
libbu++-96b00553a0ffe6bb34af6ad15e1cfc2bed67bd75.zip
Added a simple test for the log system, and switched the multilog to the new
singleton system, which unfortunately changed it's API slightly. Now it's not a pointer from the singleton, but I did add a new macro to make most usage of it even easier.
Diffstat (limited to 'src/multilog.h')
-rw-r--r--src/multilog.h31
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 */
30class MultiLog 33class MultiLog : public Singleton<MultiLog>
31{ 34{
35 friend class Singleton<MultiLog>;
32public: 36public:
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
49private: 53protected:
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
81public: 85public:
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