]> git.vomp.tv Git - jsonserver.git/blob - log.h
Make SSL cert filename part of config. Fix a shutdown segfault
[jsonserver.git] / log.h
1 /*
2     Copyright 2004-2013 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
27 class Log
28 {
29   public:
30     Log();
31     ~Log();
32     static Log* getInstance();
33
34     int init(int defaultLevel, const char* fileName);
35     int shutdown();
36     int log(const char *fromModule, int level, const char *message, ...);
37     void upLogLevel();
38     void downLogLevel();
39
40     const static int CRAZY  = 0; // mad crazy things that should never happen
41     const static int EMERG  = 1; // human assist required NOW
42     const static int ALERT  = 2; // system unusable, but happy to sit there
43     const static int CRIT   = 3; // still working, but maybe about to die
44     const static int ERR    = 4; // that response is not even listed...
45     const static int WARN   = 5; // this could be a bad thing. still running tho
46     const static int NOTICE = 6; // significant good thing
47     const static int INFO   = 7; // verbose good thing
48     const static int DEBUG  = 8; // debug-level messages
49
50   private:
51     static Log* instance;
52     int initted;
53     int logLevel;
54     int enabled;
55
56     FILE *logfile;
57 };
58
59 #endif
60
61 /*
62
63 Documentation
64 -------------
65
66 This class is intended to be instatiated once by the core.
67 For a one off use:
68
69 Log::getInstance()->log("<module-name>", Log::<levelname>, "<message>");
70
71 Or, a pointer can be stored and used:
72
73 Log *myptr = Log::getInstance();
74
75 myptr->log("<module-name>", Log::<levelname>, "<message>");
76 myptr->log("<module-name>", Log::<levelname>, "<message>");
77
78 Level usages are above.
79
80 The message parameter in the log function can be used in the same way as printf, eg.
81
82 myptr->log("<module-name>", Log::<levelname>, "Success: %s %i", stringpointer, integer);
83
84 */