#ifndef CONTROLLER_LOGGER_H
#define CONTROLLER_LOGGER_H

#include <stdio.h>
#include <time.h>

#include <colors.h>
#include <config.h>

void
logger_log(FILE *stream, log_level_t level, const char *filename, int line, const char *func, const char *msg, ...);

#define LOG_TRACE(...) logger_log(stdout, LOG_LEVEL_TRACE, __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_DEBUG(...) logger_log(stdout, LOG_LEVEL_DEBUG, __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_INFO(...)  logger_log(stdout, LOG_LEVEL_INFO , __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_WARN(...)  logger_log(stdout, LOG_LEVEL_WARN , __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_ERROR(...) logger_log(stderr, LOG_LEVEL_ERROR, __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_FATAL(...) logger_log(stderr, LOG_LEVEL_FATAL, __FILE__, __LINE__, __func__, ##__VA_ARGS__)

#endif //CONTROLLER_LOGGER_H