#ifndef UCX_LOGGING_H
#define UCX_LOGGING_H
#include "ucx.h"
#include "map.h"
#include "string.h"
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#define UCX_LOGGER_ERROR 0x00
#define UCX_LOGGER_WARN 0x10
#define UCX_LOGGER_INFO 0x20
#define UCX_LOGGER_DEBUG 0x30
#define UCX_LOGGER_TRACE 0x40
#define UCX_LOGGER_LEVEL 0x01
#define UCX_LOGGER_TIMESTAMP 0x02
#define UCX_LOGGER_SOURCE 0x04
typedef struct {
void *stream;
write_func writer;
char *dateformat;
unsigned int level;
unsigned int mask;
UcxMap* levels;
} UcxLogger;
UcxLogger *ucx_logger_new(
void *stream,
unsigned int level,
unsigned int mask);
void ucx_logger_free(UcxLogger* logger);
void ucx_logger_logf(UcxLogger *logger,
unsigned int level,
const char* file,
const unsigned int line,
const char* format, ...);
#define ucx_logger_log(logger, level, ...) \
ucx_logger_logf(logger, level,
__FILE__,
__LINE__,
__VA_ARGS__)
#define ucx_logger_error(logger, ...) \
ucx_logger_log(logger,
UCX_LOGGER_ERROR,
__VA_ARGS__)
#define ucx_logger_info(logger, ...) \
ucx_logger_log(logger,
UCX_LOGGER_INFO,
__VA_ARGS__)
#define ucx_logger_warn(logger, ...) \
ucx_logger_log(logger,
UCX_LOGGER_WARN,
__VA_ARGS__)
#define ucx_logger_debug(logger, ...) \
ucx_logger_log(logger,
UCX_LOGGER_DEBUG,
__VA_ARGS__)
#define ucx_logger_trace(logger, ...) \
ucx_logger_log(logger,
UCX_LOGGER_TRACE,
__VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif