forked from stevemonaco/Atlas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AtlasLogger.cpp
92 lines (75 loc) · 1.83 KB
/
AtlasLogger.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <list>
#include <cstdarg>
#include "AtlasLogger.h"
using namespace std;
AtlasLogger Logger;
AtlasLogger::AtlasLogger()
{
output = NULL;
isLogging = true;
Errors.clear();
}
AtlasLogger::~AtlasLogger()
{
if (output != NULL && output != stdout)
fclose(output);
}
void AtlasLogger::ReportError(unsigned int ScriptLine, const char* FormatStr ...)
{
AtlasError Error;
Error.Severity = FATALERROR;
Error.LineNumber = ScriptLine;
va_list arglist;
va_start(arglist, FormatStr);
int length = vsnprintf(buf, BufSize, FormatStr, arglist);
va_end(arglist);
Error.Error = buf;
Errors.push_back(Error);
}
void AtlasLogger::ReportWarning(unsigned int ScriptLine, const char* FormatStr ...)
{
AtlasError Error;
Error.Severity = WARNING;
Error.LineNumber = ScriptLine;
va_list arglist;
va_start(arglist, FormatStr);
int length = vsnprintf(buf, BufSize, FormatStr, arglist);
va_end(arglist);
Error.Error.assign(buf, length);
Errors.push_back(Error);
}
void AtlasLogger::Log(const char* FormatStr ...)
{
if (isLogging && output)
{
va_list arglist;
va_start(arglist, FormatStr);
vfprintf(output, FormatStr, arglist);
va_end(arglist);
fflush(output);
}
}
void AtlasLogger::SetLogStatus(bool LoggingOn)
{
isLogging = LoggingOn;
}
void AtlasLogger::SetLogSource(FILE* OutputSource)
{
output = OutputSource;
}
void AtlasLogger::BugReportLine(unsigned int Line, const char* Filename, const char* Msg)
{
fprintf(stderr, "Bug: %s Line %u in source file %s\n", Msg, Line, Filename);
}
void AtlasLogger::BugReport(unsigned int Line, const char* Filename, const char* FormatStr, ...)
{
fprintf(stderr, "Bug: ");
va_list arglist;
va_start(arglist, FormatStr);
vfprintf(stderr, FormatStr, arglist);
va_end(arglist);
fprintf(stderr, " Line %u in source file %s\n", Line, Filename);
}