ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/s10k/CommonLibs/plog/Formatters/CsvFormatter.h
Revision: 1096
Committed: Sat Dec 30 14:40:33 2017 UTC (7 years, 9 months ago) by s10k
Content type: text/x-chdr
File size: 1943 byte(s)
Log Message:
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 Contents

# Content
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 }