/usr/include/eina-1/eina/eina_log.h is in libeina-dev 1.0.0-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | /* EINA - EFL data type library
* Copyright (C) 2007-2008 Jorge Luis Zapata Muga, Cedric Bail
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library;
* if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef EINA_LOG_H_
#define EINA_LOG_H_
#include <stdlib.h>
#include <stdarg.h>
#include "eina_types.h"
#define EINA_COLOR_LIGHTRED "\033[31;1m"
#define EINA_COLOR_RED "\033[31m"
#define EINA_COLOR_LIGHTBLUE "\033[34;1m"
#define EINA_COLOR_BLUE "\033[34m"
#define EINA_COLOR_GREEN "\033[32;1m"
#define EINA_COLOR_YELLOW "\033[33;1m"
#define EINA_COLOR_ORANGE "\033[0;33m"
#define EINA_COLOR_WHITE "\033[37;1m"
#define EINA_COLOR_LIGHTCYAN "\033[36;1m"
#define EINA_COLOR_CYAN "\033[36m"
#define EINA_COLOR_RESET "\033[0m"
#define EINA_COLOR_HIGH "\033[1m"
/**
* @addtogroup Eina_Tools_Group Tools
*
* @{
*/
/**
* @defgroup Eina_Log_Group Log
*
* @{
*/
/**
* EINA_LOG_DOMAIN_GLOBAL is the general purpose log domain to be
* used, it is always registered and available everywhere.
*/
EAPI extern int EINA_LOG_DOMAIN_GLOBAL;
#ifndef EINA_LOG_DOMAIN_DEFAULT
/**
* @def EINA_LOG_DOMAIN_DEFAULT
* This macro defines the domain to use with the macros EINA_LOG_DOM_DBG(),
* EINA_LOG_DOM_INFO(), EINA_LOG_DOM_WARN(), EINA_LOG_DOM_ERR() and
* EINA_LOG_DOM_CRIT().
*
* If not defined prior to the inclusion of this header, then it
* defaults to #EINA_LOG_DOMAIN_GLOBAL.
*
* @note One may like to redefine this in its code to avoid typing too
* much. In this case the recommended way is:
*
* @code
* #include <Eina.h>
* #undef EINA_LOG_DOMAIN_DEFAULT
* #define EINA_LOG_DOMAIN_DEFAULT _log_dom
* static int _log_dom = -1;
*
* int main(void)
* {
* eina_init();
* _log_dom = eina_log_domain_register("mydom", EINA_COLOR_CYAN);
* EINA_LOG_ERR("using my own domain");
* return 0;
* }
* @endcode
*
* @warning If one defines the domain prior to inclusion of this
* header, the defined log domain symbol must be defined
* prior as well, otherwise the inlined functions defined by
* Eina will fail to find the symbol, causing build failure.
*
* @code
* #define EINA_LOG_DOMAIN_DEFAULT _log_dom
* static int _log_dom = -1; // must come before inclusion of Eina.h!
* #include <Eina.h>
*
* int main(void)
* {
* eina_init();
* _log_dom = eina_log_domain_register("mydom", EINA_COLOR_CYAN);
* EINA_LOG_ERR("using my own domain");
* return 0;
* }
* @endcode
*
*/
# define EINA_LOG_DOMAIN_DEFAULT EINA_LOG_DOMAIN_GLOBAL
#endif /* EINA_LOG_DOMAIN_DEFAULT */
/**
* @def EINA_LOG(DOM, LEVEL, fmt, ...)
* Logs a message on the specified domain, level and format.
*
* @note if @c EINA_LOG_LEVEL_MAXIMUM is defined, then messages larger
* than this value will be ignored regardless of current domain
* level, the eina_log_print() is not even called! Most
* compilers will just detect the two integers make the branch
* impossible and remove the branch and function call all
* together. Take this as optimization tip and possible remove
* debug messages from binaries to be deployed, saving on hot
* paths. Never define @c EINA_LOG_LEVEL_MAXIMUM on public
* header files.
*/
#ifdef EINA_LOG_LEVEL_MAXIMUM
#define EINA_LOG(DOM, LEVEL, fmt, ...) \
do { \
if (LEVEL <= EINA_LOG_LEVEL_MAXIMUM) { \
eina_log_print(DOM, LEVEL, __FILE__, __FUNCTION__, __LINE__, \
fmt, ## __VA_ARGS__); } \
} while (0)
#else
#define EINA_LOG(DOM, LEVEL, fmt, ...) \
eina_log_print(DOM, \
LEVEL, \
__FILE__, \
__FUNCTION__, \
__LINE__, \
fmt, \
## __VA_ARGS__)
#endif
/**
* @def EINA_LOG_DOM_CRIT(DOM, fmt, ...)
* Logs a message with level CRITICAL on the specified domain and format.
*/
#define EINA_LOG_DOM_CRIT(DOM, fmt, ...) \
EINA_LOG(DOM, EINA_LOG_LEVEL_CRITICAL, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_DOM_ERR(DOM, fmt, ...)
* Logs a message with level ERROR on the specified domain and format.
*/
#define EINA_LOG_DOM_ERR(DOM, fmt, ...) \
EINA_LOG(DOM, EINA_LOG_LEVEL_ERR, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_DOM_INFO(DOM, fmt, ...)
* Logs a message with level INFO on the specified domain and format.
*/
#define EINA_LOG_DOM_INFO(DOM, fmt, ...) \
EINA_LOG(DOM, EINA_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_DOM_DBG(DOM, fmt, ...)
* Logs a message with level DEBUG on the specified domain and format.
*/
#define EINA_LOG_DOM_DBG(DOM, fmt, ...) \
EINA_LOG(DOM, EINA_LOG_LEVEL_DBG, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_DOM_WARN(DOM, fmt, ...)
* Logs a message with level WARN on the specified domain and format.
*/
#define EINA_LOG_DOM_WARN(DOM, fmt, ...) \
EINA_LOG(DOM, EINA_LOG_LEVEL_WARN, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_CRIT(fmt, ...)
* Logs a message with level CRITICAL on the default domain with the specified
* format.
*/
#define EINA_LOG_CRIT(fmt, ...) \
EINA_LOG(EINA_LOG_DOMAIN_DEFAULT, \
EINA_LOG_LEVEL_CRITICAL, \
fmt, \
## __VA_ARGS__)
/**
* @def EINA_LOG_ERR(fmt, ...)
* Logs a message with level ERROR on the default domain with the specified
* format.
*/
#define EINA_LOG_ERR(fmt, ...) \
EINA_LOG(EINA_LOG_DOMAIN_DEFAULT, EINA_LOG_LEVEL_ERR, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_INFO(fmt, ...)
* Logs a message with level INFO on the default domain with the specified
* format.
*/
#define EINA_LOG_INFO(fmt, ...) \
EINA_LOG(EINA_LOG_DOMAIN_DEFAULT, EINA_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_WARN(fmt, ...)
* Logs a message with level WARN on the default domain with the specified
* format.
*/
#define EINA_LOG_WARN(fmt, ...) \
EINA_LOG(EINA_LOG_DOMAIN_DEFAULT, EINA_LOG_LEVEL_WARN, fmt, ## __VA_ARGS__)
/**
* @def EINA_LOG_DBG(fmt, ...)
* Logs a message with level DEBUG on the default domain with the specified
* format.
*/
#define EINA_LOG_DBG(fmt, ...) \
EINA_LOG(EINA_LOG_DOMAIN_DEFAULT, EINA_LOG_LEVEL_DBG, fmt, ## __VA_ARGS__)
/**
* @typedef Eina_Log_Domain
* The domain used for logging.
*/
typedef struct _Eina_Log_Domain Eina_Log_Domain;
/**
* @struct _Eina_Log_Domain
* The domain used for logging.
*/
struct _Eina_Log_Domain
{
int level; /**< Max level to log */
const char *domain_str; /**< Formatted string with color to print */
const char *name; /**< Domain name */
size_t namelen; /**< strlen(name) */
/* Private */
Eina_Bool deleted : 1; /**< Flags deletion of domain, a free slot */
};
EAPI void eina_log_threads_enable(void);
/**
* @enum _Eina_Log_Level
* List of available logging levels.
*/
typedef enum _Eina_Log_Level
{
EINA_LOG_LEVEL_CRITICAL, /**< Critical log level */
EINA_LOG_LEVEL_ERR, /**< Error log level */
EINA_LOG_LEVEL_WARN, /**< Warning log level */
EINA_LOG_LEVEL_INFO, /**< Information log level */
EINA_LOG_LEVEL_DBG, /**< Debug log level */
EINA_LOG_LEVELS, /**< Count of default log levels */
EINA_LOG_LEVEL_UNKNOWN = (-2147483647 - 1) /**< Unknown level */
} Eina_Log_Level;
/**
* @typedef Eina_Log_Print_Cb
* Type for print callbacks.
*/
typedef void (*Eina_Log_Print_Cb)(const Eina_Log_Domain *d,
Eina_Log_Level level,
const char *file, const char *fnc, int line,
const char *fmt, void *data, va_list args);
/*
* Customization
*/
EAPI void eina_log_print_cb_set(Eina_Log_Print_Cb cb, void *data) EINA_ARG_NONNULL(1);
EAPI void eina_log_level_set(int level);
EAPI int eina_log_level_get(void) EINA_WARN_UNUSED_RESULT;
static inline Eina_Bool
eina_log_level_check(int level);
EAPI Eina_Bool eina_log_main_thread_check(void) EINA_CONST EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_color_disable_set(Eina_Bool disabled);
EAPI Eina_Bool eina_log_color_disable_get(void) EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_file_disable_set(Eina_Bool disabled);
EAPI Eina_Bool eina_log_file_disable_get(void) EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_function_disable_set(Eina_Bool disabled);
EAPI Eina_Bool eina_log_function_disable_get(void) EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_abort_on_critical_set(Eina_Bool abort_on_critical);
EAPI Eina_Bool eina_log_abort_on_critical_get(void) EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_abort_on_critical_level_set(int critical_level);
EAPI int eina_log_abort_on_critical_level_get(void) EINA_WARN_UNUSED_RESULT;
EAPI void eina_log_domain_level_set(const char *domain_name, int level) EINA_ARG_NONNULL(1);
EAPI int eina_log_domain_level_get(const char *domain_name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI int eina_log_domain_registered_level_get(int domain) EINA_WARN_UNUSED_RESULT;
static inline Eina_Bool eina_log_domain_level_check(int domain, int level);
/*
* Logging domains
*/
EAPI int eina_log_domain_register(const char *name, const char *color) EINA_ARG_NONNULL(1);
EAPI void eina_log_domain_unregister(int domain);
/*
* Logging functions.
*/
EAPI void eina_log_print(int domain,
Eina_Log_Level level,
const char *file,
const char *function,
int line,
const char *fmt,
...) EINA_ARG_NONNULL(3, 4, 6) EINA_PRINTF(6, 7) EINA_NOINSTRUMENT;
EAPI void eina_log_vprint(int domain,
Eina_Log_Level level,
const char *file,
const char *fnc,
int line,
const char *fmt,
va_list args) EINA_ARG_NONNULL(3, 4, 6) EINA_NOINSTRUMENT;
/*
* Logging methods (change how logging is done).
*/
EAPI void eina_log_print_cb_stdout(const Eina_Log_Domain *d,
Eina_Log_Level level,
const char *file,
const char *fnc,
int line,
const char *fmt,
void *data,
va_list args);
EAPI void eina_log_print_cb_stderr(const Eina_Log_Domain *d,
Eina_Log_Level level,
const char *file,
const char *fnc,
int line,
const char *fmt,
void *data,
va_list args);
EAPI void eina_log_print_cb_file(const Eina_Log_Domain *d,
Eina_Log_Level level,
const char *file,
const char *fnc,
int line,
const char *fmt,
void *data,
va_list args);
#include "eina_inline_log.x"
/**
* @}
*/
/**
* @}
*/
#endif /* EINA_LOG_H_ */
|