initial revision
[ucgine.git] / tools / cfzy / libconfizery / cfzy_log.h
1 /*
2  * Copyright (c) 2013, Olivier MATZ <zer0@droids-corp.org>
3  * All rights reserved.
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this log of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above copyright
10  *       notice, this log of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *     * Neither the name of the University of California, Berkeley nor the
13  *       names of its contributors may be used to endorse or promote products
14  *       derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef _CFZY_LOG_H_
29 #define _CFZY_LOG_H_
30
31 /**
32  * @file
33  * Confizery Log
34  *
35  * This module provides logging helpers. XXX explain
36  */
37
38 /* log levels */
39 #define CFZY_LOG_ERR      0
40 #define CFZY_LOG_WARNING  1
41 #define CFZY_LOG_NOTICE   2
42 #define CFZY_LOG_INFO     3
43 #define CFZY_LOG_DEBUG    4
44
45 /**
46  * Initialize log subsystem
47  *
48  * @return
49  *   0 on succes, -1 on error
50  */
51 int cfzy_log_init(void);
52
53 /**
54  * Uninitialize log subsystem
55  */
56 void cfzy_log_exit(void);
57
58 /**
59  * Set default log level
60  *
61  * @param level
62  *   Level of log, -1 means no log at all
63  * @return
64  *   0 on succes, -1 on error
65  */
66 int cfzy_log_set_default_level(int level);
67
68 /**
69  * Set log level for a specific log type
70  *
71  * @param logtype
72  *   String describing the log type
73  * @param level
74  *   Level of log, -1 means no log at all
75  * @return
76  *   0 on succes, -1 on error
77  */
78 int cfzy_log_set_level(const char *logtype, int level);
79
80 /**
81  * Print a log if given level is <= to configured log level
82  *
83  * The log is displayed on standard error.
84  *
85  * @param logtype
86  *   String describing the log type
87  * @param level
88  *   Level at which the text must be displayed
89  * @param fmt
90  *   Format string, followed by optional arguments, like in printf.
91  * @return
92  *   The number of written characters (0 if nothing is diplayed),
93  *   or -1 on error.
94  */
95 int cfzy_log_printf(const char *logtype, int level, const char *fmt, ...);
96
97 #if 0
98 /**
99  * Print a log if given level is <= to configured log level
100  */
101 #define CFZY_LOG(logtype, level, fmt, args...)                          \
102         cfzy_log_printf(logtype, CFZY_LOG_##level, fmt,                 \
103                         ## args)
104 #else
105 #define CFZY_LOG(logtype, level, fmt, args...)                          \
106         cfzy_log_printf(logtype, CFZY_LOG_##level, "%s():%d " fmt,      \
107                         __func__, __LINE__, ## args)
108 #endif
109
110 #endif /* _CFZY_LOG_H_ */