source: s10k/CommonLibs/plog/Init.h@ 1191

Last change on this file since 1191 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: 3.7 KB
Line 
1#pragma once
2#include <plog/Logger.h>
3#include <plog/Formatters/CsvFormatter.h>
4#include <plog/Formatters/TxtFormatter.h>
5#include <plog/Appenders/RollingFileAppender.h>
6#include <cstring>
7
8namespace plog
9{
10 namespace
11 {
12 bool isCsv(const util::nchar* fileName)
13 {
14 const util::nchar* dot = util::findExtensionDot(fileName);
15#ifdef _WIN32
16 return dot && 0 == std::wcscmp(dot, L".csv");
17#else
18 return dot && 0 == std::strcmp(dot, ".csv");
19#endif
20 }
21 }
22
23 //////////////////////////////////////////////////////////////////////////
24 // Empty initializer / one appender
25
26 template<int instance>
27 inline Logger<instance>& init(Severity maxSeverity = none, IAppender* appender = NULL)
28 {
29 static Logger<instance> logger(maxSeverity);
30 return appender ? logger.addAppender(appender) : logger;
31 }
32
33 inline Logger<PLOG_DEFAULT_INSTANCE>& init(Severity maxSeverity = none, IAppender* appender = NULL)
34 {
35 return init<PLOG_DEFAULT_INSTANCE>(maxSeverity, appender);
36 }
37
38 //////////////////////////////////////////////////////////////////////////
39 // RollingFileAppender with any Formatter
40
41 template<class Formatter, int instance>
42 inline Logger<instance>& init(Severity maxSeverity, const util::nchar* fileName, size_t maxFileSize = 0, int maxFiles = 0)
43 {
44 static RollingFileAppender<Formatter> rollingFileAppender(fileName, maxFileSize, maxFiles);
45 return init<instance>(maxSeverity, &rollingFileAppender);
46 }
47
48 template<class Formatter>
49 inline Logger<PLOG_DEFAULT_INSTANCE>& init(Severity maxSeverity, const util::nchar* fileName, size_t maxFileSize = 0, int maxFiles = 0)
50 {
51 return init<Formatter, PLOG_DEFAULT_INSTANCE>(maxSeverity, fileName, maxFileSize, maxFiles);
52 }
53
54 //////////////////////////////////////////////////////////////////////////
55 // RollingFileAppender with TXT/CSV chosen by file extension
56
57 template<int instance>
58 inline Logger<instance>& init(Severity maxSeverity, const util::nchar* fileName, size_t maxFileSize = 0, int maxFiles = 0)
59 {
60 return isCsv(fileName) ? init<CsvFormatter, instance>(maxSeverity, fileName, maxFileSize, maxFiles) : init<TxtFormatter, instance>(maxSeverity, fileName, maxFileSize, maxFiles);
61 }
62
63 inline Logger<PLOG_DEFAULT_INSTANCE>& init(Severity maxSeverity, const util::nchar* fileName, size_t maxFileSize = 0, int maxFiles = 0)
64 {
65 return init<PLOG_DEFAULT_INSTANCE>(maxSeverity, fileName, maxFileSize, maxFiles);
66 }
67
68 //////////////////////////////////////////////////////////////////////////
69 // CHAR variants for Windows
70
71#ifdef _WIN32
72 template<class Formatter, int instance>
73 inline Logger<instance>& init(Severity maxSeverity, const char* fileName, size_t maxFileSize = 0, int maxFiles = 0)
74 {
75 return init<Formatter, instance>(maxSeverity, util::toWide(fileName).c_str(), maxFileSize, maxFiles);
76 }
77
78 template<class Formatter>
79 inline Logger<PLOG_DEFAULT_INSTANCE>& init(Severity maxSeverity, const char* fileName, size_t maxFileSize = 0, int maxFiles = 0)
80 {
81 return init<Formatter, PLOG_DEFAULT_INSTANCE>(maxSeverity, fileName, maxFileSize, maxFiles);
82 }
83
84 template<int instance>
85 inline Logger<instance>& init(Severity maxSeverity, const char* fileName, size_t maxFileSize = 0, int maxFiles = 0)
86 {
87 return init<instance>(maxSeverity, util::toWide(fileName).c_str(), maxFileSize, maxFiles);
88 }
89
90 inline Logger<PLOG_DEFAULT_INSTANCE>& init(Severity maxSeverity, const char* fileName, size_t maxFileSize = 0, int maxFiles = 0)
91 {
92 return init<PLOG_DEFAULT_INSTANCE>(maxSeverity, fileName, maxFileSize, maxFiles);
93 }
94#endif
95}
Note: See TracBrowser for help on using the repository browser.