Crealned up some TODOs, FIXMEs etc. Added better error handling. Looks better, feels better.
49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
/**
|
|
* @file log.h
|
|
* @author Piotr Krygier (everyonencancode@gmail.com)
|
|
* @brief Logging interfaces
|
|
* @version 0.1
|
|
* @date 2022-02-11
|
|
*
|
|
* @copyright Copyright (c) 2022
|
|
*
|
|
*/
|
|
|
|
#ifndef RSE_LOGGER_H
|
|
#define RSE_LOGGER_H
|
|
|
|
#ifndef LOG_LEVEL
|
|
#define LOG_LEVEL LOGLEVEL_DEBUG
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
|
|
#define LOGGER(log_level, ...) _log_log(log_level, __FILENAME__, __LINE__, __VA_ARGS__)
|
|
// #define LOGGER(log_level, ...) printf("[##log_level] %s:%d", __FILE__, __LINE__); printf(__VA_ARGS__)
|
|
|
|
#define LOGT(...) LOGGER(LOGLEVEL_TRACE, __VA_ARGS__)
|
|
#define LOGD(...) LOGGER(LOGLEVEL_DEBUG, __VA_ARGS__)
|
|
#define LOGI(...) LOGGER(LOGLEVEL_INFO, __VA_ARGS__)
|
|
#define LOGW(...) LOGGER(LOGLEVEL_WARNING, __VA_ARGS__)
|
|
#define LOGE(...) LOGGER(LOGLEVEL_ERROR, __VA_ARGS__)
|
|
#define LOGF(...) LOGGER(LOGLEVEL_FATAL, __VA_ARGS__)
|
|
|
|
/**
|
|
* @brief Log level. Is not an enum class, because level is being compared to enable prints
|
|
*
|
|
*/
|
|
enum log_level_t
|
|
{
|
|
LOGLEVEL_TRACE,
|
|
LOGLEVEL_DEBUG,
|
|
LOGLEVEL_INFO,
|
|
LOGLEVEL_WARNING,
|
|
LOGLEVEL_ERROR,
|
|
LOGLEVEL_FATAL
|
|
};
|
|
|
|
void _log_log(unsigned int level, const char* file, int line, const char* fmt, ...);
|
|
|
|
#endif /* RSE_LOGGER_H */ |