Last change
on this file since 1130 was 1096, checked in by s10k, 7 years ago |
Added zlib, quazip, basicxmlsyntaxhighlighter, conditionalsemaphore and linenumberdisplay libraries. zlib and quazip are pre-compiled, but you can compile them yourself, just delete the dll files (or equivalent binary files to your OS)
|
File size:
1.9 KB
|
Line | |
---|
1 | #pragma once
|
---|
2 | #include <plog/Record.h>
|
---|
3 | #include <plog/Util.h>
|
---|
4 | #include <iomanip>
|
---|
5 |
|
---|
6 | namespace plog
|
---|
7 | {
|
---|
8 | class CsvFormatter
|
---|
9 | {
|
---|
10 | public:
|
---|
11 | static util::nstring header()
|
---|
12 | {
|
---|
13 | return PLOG_NSTR("Date;Time;Severity;TID;This;Function;Message\n");
|
---|
14 | }
|
---|
15 |
|
---|
16 | static util::nstring format(const Record& record)
|
---|
17 | {
|
---|
18 | tm t;
|
---|
19 | util::localtime_s(&t, &record.getTime().time);
|
---|
20 |
|
---|
21 | util::nstringstream ss;
|
---|
22 | ss << t.tm_year + 1900 << PLOG_NSTR("/") << std::setfill(PLOG_NSTR('0')) << std::setw(2) << t.tm_mon + 1 << PLOG_NSTR("/") << std::setfill(PLOG_NSTR('0')) << std::setw(2) << t.tm_mday << PLOG_NSTR(";");
|
---|
23 | ss << std::setfill(PLOG_NSTR('0')) << std::setw(2) << t.tm_hour << PLOG_NSTR(":") << std::setfill(PLOG_NSTR('0')) << std::setw(2) << t.tm_min << PLOG_NSTR(":") << std::setfill(PLOG_NSTR('0')) << std::setw(2) << t.tm_sec << PLOG_NSTR(".") << std::setfill(PLOG_NSTR('0')) << std::setw(3) << record.getTime().millitm << PLOG_NSTR(";");
|
---|
24 | ss << severityToString(record.getSeverity()) << PLOG_NSTR(";");
|
---|
25 | ss << record.getTid() << PLOG_NSTR(";");
|
---|
26 | ss << record.getObject() << PLOG_NSTR(";");
|
---|
27 | ss << record.getFunc() << PLOG_NSTR("@") << record.getLine() << PLOG_NSTR(";");
|
---|
28 |
|
---|
29 | util::nstring message = record.getMessage();
|
---|
30 |
|
---|
31 | if (message.size() > kMaxMessageSize)
|
---|
32 | {
|
---|
33 | message.resize(kMaxMessageSize);
|
---|
34 | message.append(PLOG_NSTR("..."));
|
---|
35 | }
|
---|
36 |
|
---|
37 | util::nstringstream split(message);
|
---|
38 | util::nstring token;
|
---|
39 |
|
---|
40 | while (!split.eof())
|
---|
41 | {
|
---|
42 | std::getline(split, token, PLOG_NSTR('"'));
|
---|
43 | ss << PLOG_NSTR("\"") << token << PLOG_NSTR("\"");
|
---|
44 | }
|
---|
45 |
|
---|
46 | ss << PLOG_NSTR("\n");
|
---|
47 |
|
---|
48 | return ss.str();
|
---|
49 | }
|
---|
50 |
|
---|
51 | static const size_t kMaxMessageSize = 32000;
|
---|
52 | };
|
---|
53 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.