/**
 * sesimos - secure, simple, modern web server
 * @brief Logger (header file)
 * @file src/logger.h
 * @author Lorenz Stechauner
 * @date 2022-12-10
 */

#ifndef SESIMOS_LOGGER_H
#define SESIMOS_LOGGER_H

#define LOG_DEBUG 7
#define LOG_INFO 6
#define LOG_NOTICE 5
#define LOG_WARNING 4
#define LOG_ERROR 3
#define LOG_CRITICAL 2
#define LOG_ALERT 1

typedef unsigned char log_lvl_t;

#define debug(...) logmsgf(LOG_DEBUG, __VA_ARGS__)
#define info(...) logmsgf(LOG_INFO, __VA_ARGS__)
#define notice(...) logmsgf(LOG_NOTICE, __VA_ARGS__)
#define warning(...) logmsgf(LOG_WARNING, __VA_ARGS__)
#define error(...) logmsgf(LOG_ERROR, __VA_ARGS__)
#define critical(...) logmsgf(LOG_CRITICAL, __VA_ARGS__)
#define alert(...) logmsgf(LOG_ALERT, __VA_ARGS__)

void logmsgf(log_lvl_t level, const char *restrict format, ...);

void logger_set_name(const char *restrict format, ...);

void logger_set_prefix(const char *restrict format, ...);

int logger_init(void);

void logger_stop(void);

int logger_join(void);

#endif //SESIMOS_LOGGER_H