client-c  0.7.4
kaa_log.h
Go to the documentation of this file.
1 /*
2  * Copyright 2014 CyberVision, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
26 #ifndef KAA_LOG_H_
27 #define KAA_LOG_H_
28 
29 #include "../kaa_error.h"
30 #include "../platform/defaults.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 
38 #define KAA_LOG_LEVEL_NONE 0
39 
40 #define KAA_LOG_LEVEL_FATAL 1
41 
42 #define KAA_LOG_LEVEL_ERROR 2
43 
44 #define KAA_LOG_LEVEL_WARN 3
45 
46 #define KAA_LOG_LEVEL_INFO 4
47 
48 #define KAA_LOG_LEVEL_DEBUG 5
49 
50 #define KAA_LOG_LEVEL_TRACE 6
51 
52 #ifndef KAA_MAX_LOG_LEVEL
53 
54 #define KAA_MAX_LOG_LEVEL KAA_LOG_LEVEL_TRACE
55 #endif
56 
57 #define KAA_LOG_LEVEL_FATAL_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_FATAL)
58 #define KAA_LOG_LEVEL_ERROR_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_ERROR)
59 #define KAA_LOG_LEVEL_WARN_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_WARN)
60 #define KAA_LOG_LEVEL_INFO_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_INFO)
61 #define KAA_LOG_LEVEL_DEBUG_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_DEBUG)
62 #define KAA_LOG_LEVEL_TRACE_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_TRACE)
63 
64 
68 #ifndef KAA_LOGGER_T
69  #define KAA_LOGGER_T
70  typedef struct kaa_logger_t kaa_logger_t;
71 #endif
72 
76 typedef uint8_t kaa_log_level_t;
77 
87 kaa_error_t kaa_log_create(kaa_logger_t **logger_p, size_t buffer_size, kaa_log_level_t max_log_level, FILE* sink);
88 
96 
103 kaa_log_level_t kaa_get_max_log_level(const kaa_logger_t *self);
104 
112 kaa_error_t kaa_set_max_log_level(kaa_logger_t *self, kaa_log_level_t max_log_level);
113 
121 kaa_error_t kaa_log_set_sink(kaa_logger_t *self, FILE *sink);
122 
143 void kaa_log_write(kaa_logger_t *self, const char* source_file, int lineno, kaa_log_level_t log_level
144  , kaa_error_t error_code, const char* format, ...);
145 
146 /*
147  * Shortcut macros for logging at various log levels
148  */
149 #if KAA_LOG_LEVEL_FATAL_ENABLED
150 #define KAA_LOG_FATAL(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_FATAL, err, __VA_ARGS__)
151 #else
152 #define KAA_LOG_FATAL(...)
153 #endif
154 
155 #if KAA_LOG_LEVEL_ERROR_ENABLED
156 #define KAA_LOG_ERROR(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_ERROR, err, __VA_ARGS__)
157 #else
158 #define KAA_LOG_ERROR(...)
159 #endif
160 
161 #if KAA_LOG_LEVEL_WARN_ENABLED
162 #define KAA_LOG_WARN(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_WARN, err, __VA_ARGS__)
163 #else
164 #define KAA_LOG_WARN(...)
165 #endif
166 
167 #if KAA_LOG_LEVEL_INFO_ENABLED
168 #define KAA_LOG_INFO(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_INFO, err, __VA_ARGS__)
169 #else
170 #define KAA_LOG_INFO(...)
171 #endif
172 
173 #if KAA_LOG_LEVEL_DEBUG_ENABLED
174 #define KAA_LOG_DEBUG(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_DEBUG, err, __VA_ARGS__)
175 #else
176 #define KAA_LOG_DEBUG(...)
177 #endif
178 
179 #if KAA_LOG_LEVEL_TRACE_ENABLED
180 #define KAA_LOG_TRACE(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_TRACE, err, __VA_ARGS__)
181 #else
182 #define KAA_LOG_TRACE(...)
183 #endif
184 
185 #if KAA_LOCAL_DBG
186 #define KAA_LOG_TRACE_LDB(logger, err, ...) KAA_LOG_TRACE(logger, err, ...)
187 #else
188 #define KAA_LOG_TRACE_LDB(...)
189 #endif
190 
191 /*
192  * Shortcut macros for tracing through the program
193  */
194 #define KAA_TRACE_IN(logger) KAA_LOG_TRACE(logger, KAA_ERR_NONE, "--> %s()", __FUNCTION__)
195 #define KAA_TRACE_OUT(logger) KAA_LOG_TRACE(logger, KAA_ERR_NONE, "<-- %s()", __FUNCTION__)
196 
197 #ifdef __cplusplus
198 } /* extern "C" */
199 #endif
200 #endif /* KAA_LOG_H_ */
kaa_error_t kaa_log_destroy(kaa_logger_t *logger)
Deinitializes and destroys the logger instance.
kaa_error_t kaa_log_set_sink(kaa_logger_t *self, FILE *sink)
Sets user sink for log output.
uint8_t kaa_log_level_t
Log level type.
Definition: kaa_log.h:76
kaa_error_t
Definition: kaa_error.h:31
kaa_error_t kaa_set_max_log_level(kaa_logger_t *self, kaa_log_level_t max_log_level)
Sets the maximum log level.
struct kaa_logger_t kaa_logger_t
Definition: kaa_context.h:85
void kaa_log_write(kaa_logger_t *self, const char *source_file, int lineno, kaa_log_level_t log_level, kaa_error_t error_code, const char *format,...)
Compiles a log message and puts it into the sink.
kaa_error_t kaa_log_create(kaa_logger_t **logger_p, size_t buffer_size, kaa_log_level_t max_log_level, FILE *sink)
Creates and initializes a logger instance.
kaa_log_level_t kaa_get_max_log_level(const kaa_logger_t *self)
Retrieves the current log level.