1
0
Fork 0

Spectre/System/Log: Support Writer interface.

This commit is contained in:
Henrik Hautakoski 2023-02-18 13:54:57 +01:00
parent 8db01a0957
commit faed79c653
2 changed files with 20 additions and 4 deletions

View file

@ -2,10 +2,18 @@
#include <string>
#include <stdarg.h>
#include <Spectre/System/Log.h>
#include <Spectre/System/Log/Writer.h>
namespace sp
{
log::Writer* Log::_writer;
void Log::setWriter(log::Writer* writer)
{
_writer = writer;
}
void Log::info(const char *format, ...) {
va_list vl;
@ -48,13 +56,13 @@ void Log::debug(const char *format, ...)
void Log::writeln(Type type, const char *format, va_list args)
{
FILE *fd = stderr;
int len;
static char msg[4096];
static char buf[4096];
const char *prefix;
switch(type) {
case T_INFO :
fd = stdout;
prefix = "INFO";
break;
case T_WARNING :
@ -73,8 +81,10 @@ void Log::writeln(Type type, const char *format, va_list args)
break;
}
vsnprintf(buf, sizeof(buf), format, args);
fprintf(fd, "%s: %s\n", prefix, buf);
vsnprintf(msg, sizeof(msg), format, args);
len = sprintf(buf, "%s: %s\n", prefix, msg);
_writer->write(buf, len);
}
} // namespace sp