orca/src/platform/platform_log.c

57 lines
1.2 KiB
C

/************************************************************//**
*
* @file: platform_log.c
* @author: Martin Fouilleul
* @date: 18/04/2023
*
*****************************************************************/
#include"platform_log.h"
typedef struct log_config
{
log_output* output;
log_level level;
} log_config;
//TODO: make default output a compile-time constant to avoid check in log_push()?
static log_config __logConfig = {0, LOG_LEVEL_INFO};
void log_set_output(log_output* output)
{
__logConfig.output = output;
}
void log_set_level(log_level level)
{
__logConfig.level = level;
}
void platform_log_push(log_output* output,
log_level level,
str8 file,
str8 function,
int line,
const char* fmt,
va_list ap);
void log_push(log_level level,
str8 function,
str8 file,
int line,
const char* fmt,
...)
{
if(!__logConfig.output)
{
__logConfig.output = LOG_DEFAULT_OUTPUT;
}
if(level <= __logConfig.level)
{
va_list ap;
va_start(ap, fmt);
platform_log_push(__logConfig.output, level, file, function, line, fmt, ap);
va_end(ap);
}
}