]> git.vomp.tv Git - vompclient.git/blob - oldlog.h
Log conversion
[vompclient.git] / oldlog.h
1 /*
2     Copyright 2004-2005 Chris Tallon
3     Copyright 2003-2004 University Of Bradford
4
5     This file is part of VOMP.
6
7     VOMP is free software; you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation; either version 2 of the License, or
10     (at your option) any later version.
11
12     VOMP is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16
17     You should have received a copy of the GNU General Public License
18     along with VOMP; if not, write to the Free Software
19     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20 */
21
22 #ifndef LOG_H
23 #define LOG_H
24
25 #include <stdio.h>
26 #ifndef WIN32
27  #include <unistd.h>
28  #include <sys/time.h>
29 #else
30  #include <sys/timeb.h>
31 #endif
32
33 #include <time.h>
34 #include <string.h>
35 #include <stdarg.h>
36 #include <sys/types.h>
37 #include "defines.h"
38
39
40 class ExternLogger {
41 public:
42         virtual bool LogExtern(const char* message)=0;
43 };
44
45
46 class Log
47 {
48   public:
49     Log();
50     ~Log();
51     static Log* getInstance();
52
53     int init(int defaultLevel,const char* fileName, int enabled);
54     int shutdown();
55
56     [[deprecated]]
57     int log(const char *fromModule, int level,const char *message, ...);
58
59     [[deprecated]]
60     void logLongString(const char *fromModule, int level,const char *message);
61     int status();
62     void upLogLevel();
63     void downLogLevel();
64     [[deprecated]]
65     void setExternLogger(ExternLogger* log);
66     [[deprecated]]
67     void unsetExternLogger() {
68         extlog=NULL;
69     }
70
71
72
73     const static int CRAZY  = 0; // mad crazy things that should never happen
74     const static int EMERG  = 1; // human assist required NOW
75     const static int ALERT  = 2; // system unusable, but happy to sit there
76     const static int CRIT   = 3; // still working, but maybe about to die
77     const static int ERR    = 4; // that response is not even listed...
78     const static int WARN   = 5; // this could be a bad thing. still running tho
79     const static int NOTICE = 6; // significant good thing
80     const static int INFO   = 7; // verbose good thing
81     const static int DEBUG  = 8; // debug-level messages
82
83   private:
84     static Log* instance;
85     int initted;
86     int logLevel;
87     int enabled;
88
89     FILE *logfile;
90     
91     ExternLogger* extlog;
92
93
94 };
95
96 #endif
97
98 /*
99
100 Documentation
101 -------------
102
103 This class is intended to be instatiated once by the core.
104 For a one off use:
105
106 Log::getInstance()->log("<module-name>", Log::<levelname>, "<message>");
107
108 Or, a pointer can be stored and used:
109
110 Log *myptr = Log::getInstance();
111
112 myptr->log("<module-name>", Log::<levelname>, "<message>");
113 myptr->log("<module-name>", Log::<levelname>, "<message>");
114
115 Level usages are above.
116
117 The message parameter in the log function can be used in the same way as printf, eg.
118
119 myptr->log("<module-name>", Log::<levelname>, "Success: %s %i", stringpointer, integer);
120
121 */