Spectre/System/Log: Support Writer interface.
This commit is contained in:
parent
8db01a0957
commit
faed79c653
2 changed files with 20 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue