summaryrefslogtreecommitdiff
path: root/library/errorLogging.cpp
blob: 7e73f00589e96fcc7f3281a1a61ca4fdef250161 (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
// **************************************************************************
// * 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-2010 ZenJu (zhnmju123 AT gmx.de)                    *
// **************************************************************************
//
#include "errorLogging.h"
#include <wx/datetime.h>
#include <wx/intl.h>


using FreeFileSync::ErrorLogging;


void ErrorLogging::logInfo(const wxString& infoMessage)
{
    const wxString prefix = wxString(wxT("[")) + wxDateTime::Now().FormatTime() + wxT("] ") + _("Info") + wxT(": ");
    formattedMessages.push_back(assembleMessage(prefix, infoMessage));
}


void ErrorLogging::logWarning(const wxString& warningMessage)
{
    const wxString prefix = wxString(wxT("[")) + wxDateTime::Now().FormatTime() + wxT("] ") + _("Warning") + wxT(": ");
    formattedMessages.push_back(assembleMessage(prefix, warningMessage));
}


void ErrorLogging::logError(const wxString& errorMessage)
{
    ++errorCount;

    const wxString prefix = wxString(wxT("[")) + wxDateTime::Now().FormatTime() + wxT("] ") + _("Error") + wxT(": ");
    formattedMessages.push_back(assembleMessage(prefix, errorMessage));
}


void ErrorLogging::logFatalError(const wxString& errorMessage)
{
    ++errorCount;

    const wxString prefix = wxString(wxT("[")) + wxDateTime::Now().FormatTime() + wxT("] ") + _("Fatal Error") + wxT(": ");
    formattedMessages.push_back(assembleMessage(prefix, errorMessage));
}


wxString ErrorLogging::assembleMessage(const wxString& prefix, const wxString& message)
{
    const size_t prefixLength = prefix.size();
    wxString formattedText = prefix;
    for (wxString::const_iterator i = message.begin(); i != message.end(); ++i)
        if (*i == wxChar('\n'))
        {
            formattedText += wxString(wxChar('\n')).Pad(prefixLength, wxChar(' '), true);
            while (*++i == wxChar('\n')) //remove duplicate newlines
                ;
            --i;
        }
        else
            formattedText += *i;

    return formattedText;
}
bgstack15