client-c  0.7.0
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 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 
39 #define KAA_LOG_LEVEL_NONE 0
40 
41 #define KAA_LOG_LEVEL_FATAL 1
42 
43 #define KAA_LOG_LEVEL_ERROR 2
44 
45 #define KAA_LOG_LEVEL_WARN 3
46 
47 #define KAA_LOG_LEVEL_INFO 4
48 
49 #define KAA_LOG_LEVEL_DEBUG 5
50 
51 #define KAA_LOG_LEVEL_TRACE 6
52 
53 #ifndef KAA_MAX_LOG_LEVEL
54 
55 #define KAA_MAX_LOG_LEVEL KAA_LOG_LEVEL_TRACE
56 #endif
57 
58 #define KAA_LOG_LEVEL_FATAL_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_FATAL)
59 #define KAA_LOG_LEVEL_ERROR_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_ERROR)
60 #define KAA_LOG_LEVEL_WARN_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_WARN)
61 #define KAA_LOG_LEVEL_INFO_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_INFO)
62 #define KAA_LOG_LEVEL_DEBUG_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_DEBUG)
63 #define KAA_LOG_LEVEL_TRACE_ENABLED (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_TRACE)
64 
65 
69 #ifndef KAA_LOGGER_T
70  #define KAA_LOGGER_T
71  typedef struct kaa_logger_t kaa_logger_t;
72 #endif
73 
77 typedef uint8_t kaa_log_level_t;
78 
88 kaa_error_t kaa_log_create(kaa_logger_t **logger_p, size_t buffer_size, kaa_log_level_t max_log_level, FILE* sink);
89 
97 
104 kaa_log_level_t kaa_get_max_log_level(const kaa_logger_t *self);
105 
113 kaa_error_t kaa_set_max_log_level(kaa_logger_t *self, kaa_log_level_t max_log_level);
114 
123 
144 void kaa_log_write(kaa_logger_t *self, const char* source_file, int lineno, kaa_log_level_t log_level
145  , kaa_error_t error_code, const char* format, ...);
146 
147 /*
148  * Shortcut macros for logging at various log levels
149  */
150 #if KAA_LOG_LEVEL_FATAL_ENABLED
151 #define KAA_LOG_FATAL(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_FATAL, err, __VA_ARGS__);
152 #else
153 #define KAA_LOG_FATAL(...)
154 #endif
155 
156 #if KAA_LOG_LEVEL_ERROR_ENABLED
157 #define KAA_LOG_ERROR(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_ERROR, err, __VA_ARGS__);
158 #else
159 #define KAA_LOG_ERROR(...)
160 #endif
161 
162 #if KAA_LOG_LEVEL_WARN_ENABLED
163 #define KAA_LOG_WARN(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_WARN, err, __VA_ARGS__);
164 #else
165 #define KAA_LOG_WARN(...)
166 #endif
167 
168 #if KAA_LOG_LEVEL_INFO_ENABLED
169 #define KAA_LOG_INFO(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_INFO, err, __VA_ARGS__);
170 #else
171 #define KAA_LOG_INFO(...)
172 #endif
173 
174 #if KAA_LOG_LEVEL_DEBUG_ENABLED
175 #define KAA_LOG_DEBUG(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_DEBUG, err, __VA_ARGS__);
176 #else
177 #define KAA_LOG_DEBUG(...)
178 #endif
179 
180 #if KAA_LOG_LEVEL_TRACE_ENABLED
181 #define KAA_LOG_TRACE(logger, err, ...) kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_TRACE, err, __VA_ARGS__);
182 #else
183 #define KAA_LOG_TRACE(...)
184 #endif
185 
186 /*
187  * Shortcut macros for tracing through the program
188  */
189 #define KAA_TRACE_IN(logger) KAA_LOG_TRACE(logger, KAA_ERR_NONE, "--> %s()", __FUNCTION__);
190 #define KAA_TRACE_OUT(logger) KAA_LOG_TRACE(logger, KAA_ERR_NONE, "<-- %s()", __FUNCTION__);
191 
192 #ifdef __cplusplus
193 } /* extern "C" */
194 #endif
195 #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:77
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:81
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.
void * FILE