#ifndef LOGGING_H #define LOGGING_H #include #include #include // Log levels typedef enum { LOG_LEVEL_ERROR, LOG_LEVEL_WARN, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_TRACE } LogLevel; // Initialize logging system void log_init(const char *filename, LogLevel level); // Cleanup logging system void log_cleanup(void); // Set minimum log level void log_set_level(LogLevel level); // Log a message void log_message(LogLevel level, const char *file, int line, const char *func, const char *format, ...); // Convenience macros #define LOG_ERROR(...) log_message(LOG_LEVEL_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__) #define LOG_WARN(...) log_message(LOG_LEVEL_WARN, __FILE__, __LINE__, __func__, __VA_ARGS__) #define LOG_INFO(...) log_message(LOG_LEVEL_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__) #define LOG_DEBUG(...) log_message(LOG_LEVEL_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__) #define LOG_TRACE(...) log_message(LOG_LEVEL_TRACE, __FILE__, __LINE__, __func__, __VA_ARGS__) #endif // LOGGING_H