blob: 483d670b1eea3eb11c1e3e670478426c0d4673ee (
plain)
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
|
// **************************************************************************
// * This file is part of the FreeFileSync project. It is distributed under *
// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
// * Copyright (C) 2008-2011 ZenJu (zhnmju123 AT gmx.de) *
// **************************************************************************
//
#include "error_log.h"
#include <wx/datetime.h>
#include "../shared/i18n.h"
using ffs3::ErrorLogging;
void ErrorLogging::logMsg(const wxString& message, ffs3::MessageType type)
{
Entry newEntry;
newEntry.type = type;
newEntry.time = wxDateTime::GetTimeNow();
newEntry.message = message;
messages.push_back(newEntry);
++statistics[type];
}
int ErrorLogging::typeCount(int types) const
{
int count = 0;
if (types & TYPE_INFO)
count += statistics[TYPE_INFO];
if (types & TYPE_WARNING)
count += statistics[TYPE_WARNING];
if (types & TYPE_ERROR)
count += statistics[TYPE_ERROR];
if (types & TYPE_FATAL_ERROR)
count += statistics[TYPE_FATAL_ERROR];
return count;
}
std::vector<wxString> ErrorLogging::getFormattedMessages(int types) const
{
std::vector<wxString> output;
for (std::vector<Entry>::const_iterator i = messages.begin(); i != messages.end(); ++i)
if (i->type & types)
output.push_back(formatMessage(*i));
return output;
}
wxString ErrorLogging::formatMessage(const Entry& msg)
{
wxString typeName;
switch (msg.type)
{
case TYPE_INFO:
typeName = _("Info");
break;
case TYPE_WARNING:
typeName = _("Warning");
break;
case TYPE_ERROR:
typeName = _("Error");
break;
case TYPE_FATAL_ERROR:
typeName = _("Fatal Error");
break;
}
const wxString prefix = wxString(wxT("[")) + wxDateTime(msg.time).FormatTime() + wxT("] ") + typeName + wxT(": ");
wxString formattedText = prefix;
for (wxString::const_iterator i = msg.message.begin(); i != msg.message.end(); ++i)
if (*i == wxChar('\n'))
{
formattedText += wxString(wxChar('\n')).Pad(prefix.size(), wxChar(' '), true);
while (*++i == wxChar('\n')) //remove duplicate newlines
;
--i;
}
else
formattedText += *i;
return formattedText;
}
|