File: clModuleLogger.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (74 lines) | stat: -rw-r--r-- 1,702 bytes parent folder | download | duplicates (2)
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
#include "clModuleLogger.hpp"

#include "fileutils.h"

#include <sys/time.h>
#include <wx/crt.h>
#include <wx/datetime.h>

clModuleLogger::clModuleLogger() {}

clModuleLogger::~clModuleLogger() { Flush(); }

bool clModuleLogger::CanLog() const { return FileLogger::CanLog(m_current_log_level); }

void clModuleLogger::Flush()
{
    if(m_buffer.empty()) {
        return;
    }

    if(m_buffer.Last() != '\n') {
        m_buffer.Append('\n');
    }
    FileUtils::AppendFileContent(m_logfile, m_buffer, wxConvUTF8);
    m_buffer.clear();
}

void clModuleLogger::Open(const wxFileName& filepath) { m_logfile = filepath; }

clModuleLogger& clModuleLogger::SetCurrentLogLevel(int level)
{
    if(!m_buffer.empty()) {
        // flush the current content
        Flush();
    }
    m_current_log_level = level;
    return *this;
}

wxString clModuleLogger::Prefix()
{
    if(!CanLog()) {
        return wxEmptyString;
    }

    wxString prefix;
    timeval tim;
    gettimeofday(&tim, NULL);
    int ms = (int)tim.tv_usec / 1000.0;

    wxString msStr = wxString::Format(wxT("%03d"), ms);
    prefix << wxT("[") << wxDateTime::Now().FormatISOTime() << wxT(":") << msStr;
    // add the thread ID
    prefix << wxT(" T:") << wxThread::GetCurrentId();

    switch(m_current_log_level) {
    case FileLogger::System:
        prefix << wxT(" SYSTEM]");
        break;
    case FileLogger::Error:
        prefix << wxT(" ERROR]");
        break;
    case FileLogger::Warning:
        prefix << wxT(" WARNING]");
        break;
    case FileLogger::Dbg:
        prefix << wxT(" DEBUG]");
        break;
    case FileLogger::Developer:
        prefix << wxT(" TRACE]");
        break;
    }
    return prefix;
}