@@ -17,14 +17,164 @@ Or include files:
17
17
* ` src/wsjcpp_core.h `
18
18
* ` src/wsjcpp_core.cpp `
19
19
20
- ## List of static function:
20
+ ## Logger (WSJCppLog)
21
21
22
- ### createUUID
22
+ * Output will be collored for console, but for file color will be missing.
23
+ * Functions is safe thread.
24
+ * Logger have a log-rotate (every 51000 seconds / every day)
25
+ * WSJCppLog::throw_err - will be generate ` throw std::runtime_error(sMessage); `
26
+ * std::vector< std::string > WSJCppLog::getLastLogMessages() - last 50 records from log
23
27
24
- generation uuid but before you need call once ` WSJCppCore::initRandom(); ` (for example in main function)
28
+ In main your need init logger first.
25
29
26
30
```
27
- std::string sUuid = WSJCppCore::createUuid();
31
+ #include <wsjcpp_core.h>
32
+
33
+ int main(int argc, char* argv[]) {
34
+ std::string TAG = "MAIN";
35
+ if (!WSJCppCore::dirExists(".logs")) {
36
+ WSJCppCore::makeDir(".logs");
37
+ }
38
+ WSJCppLog::setLogDirectory(".logs");
39
+ WSJCppLog::setPrefixLogFile("app");
40
+
41
+ // ...
42
+ return 0;
43
+ }
44
+ ```
45
+
46
+ And then in any place in code you can call static functions:
47
+
48
+ ```
49
+ #include <wsjcpp_core.h>
50
+
51
+ ...
52
+ const std::string TAG = "MAIN";
53
+ WSJCppLog::info(TAG, "Hello info");
54
+ WSJCppLog::err(TAG, "Hello err");
55
+ WSJCppLog::warn(TAG, "Hello warn");
56
+ WSJCppLog::ok(TAG, "Hello ok");
57
+ ```
58
+
59
+ Example output
60
+ ```
61
+ 2020-02-25 16:56:07.373, 0x0x10ac51dc0 [INFO] MAIN: Hello info
62
+ 2020-02-25 16:56:07.374, 0x0x10ac51dc0 [ERR] MAIN: Hello err
63
+ 2020-02-25 16:56:07.375, 0x0x10ac51dc0 [WARN] MAIN: Hello warn
64
+ 2020-02-25 16:56:07.376, 0x0x10ac51dc0 [OK] MAIN: Hello ok
65
+ ```
66
+
67
+ ## List of static function (WSJCppCore):
68
+
69
+ ### doNormalizePath
70
+
71
+ Normalize paths. for example: ".//../bin/some/../" -> "./../bin/"
72
+
73
+ ```
74
+ std::string sPath = WSJCppCore::doNormalizePath(".//../bin/some/../");
75
+ ```
76
+
77
+ ### extractFilename
78
+
79
+ Extract base filename from fullpath.
80
+
81
+ ```
82
+ std::string sFilename = WSJCppCore::doNormalizePath(".//../bin/some/../file.txt");
83
+ ```
84
+
85
+ ### getCurrentDirectory
86
+
87
+ ```
88
+ static std::string getCurrentDirectory();
89
+ ```
90
+
91
+ ### currentTime_milliseconds
92
+
93
+ ```
94
+ static long currentTime_milliseconds();
95
+ ```
96
+
97
+ ### currentTime_seconds
98
+
99
+ ```
100
+ static long currentTime_seconds();
101
+ ```
102
+
103
+ ### currentTime_forFilename
104
+
105
+ ```
106
+ static std::string currentTime_forFilename();
107
+ ```
108
+
109
+ ### currentTime_logformat
110
+
111
+ ```
112
+ static std::string currentTime_logformat();
113
+ ```
114
+
115
+ ### threadId
116
+
117
+ ```
118
+ static std::string threadId();
119
+ ```
120
+
121
+ ### formatTimeForWeb
122
+
123
+ ```
124
+ static std::string formatTimeForWeb(long nTimeInSec);
125
+ ```
126
+
127
+ ### formatTimeForFilename
128
+
129
+ ```
130
+ static std::string formatTimeForFilename(long nTimeInSec);
131
+ ```
132
+
133
+ ### formatTimeUTC
134
+
135
+ ```
136
+ static std::string formatTimeUTC(int nTimeInSec);
137
+ ```
138
+
139
+ ### dirExists
140
+
141
+ ```
142
+ static bool dirExists(const std::string &sFilename);
143
+ ```
144
+
145
+ ### fileExists
146
+
147
+ ```
148
+ static bool fileExists(const std::string &sFilename);
149
+ ```
150
+
151
+ ### listOfDirs
152
+
153
+ ```
154
+ static std::vector<std::string> listOfDirs(const std::string &sDirname);
155
+ ```
156
+
157
+ ### listOfFiles
158
+
159
+ ```
160
+ static std::vector<std::string> listOfFiles(const std::string &sDirname);
161
+ ```
162
+
163
+ ### makeDir
164
+
165
+ Create a new directory
166
+ ```
167
+ std::string sDirname = ".logs";
168
+ if (WSJCppCore::makeDir(sDirname)) {
169
+ std::cout << " Created '" << sDirname << "'" << std::endl;
170
+ }
171
+ ```
172
+
173
+ ### writeFile
174
+
175
+ ```
176
+ static bool writeFile(const std::string &sFilename, const std::string &sContent);
177
+ static bool writeFile(const std::string &sFilename, const char *pBuffer, const int nBufferSize);
28
178
```
29
179
30
180
### readTextFile
@@ -35,4 +185,95 @@ std::string sContent;
35
185
if (WSJCppCore::readTextFile("./file.txt", sContent)) {
36
186
std::cout << sContent;
37
187
}
188
+ ```
189
+
190
+ ### removeFile
191
+
192
+ ```
193
+ if (WSJCppCore::removeFile("./file.txt")) {
194
+ std::cout << "File removed" << std::endl;
195
+ }
196
+ ```
197
+
198
+ ### trim
199
+
200
+ ```
201
+ static std::string& ltrim(std::string& str, const std::string& chars = "\t\n\v\f\r ");
202
+ static std::string& rtrim(std::string& str, const std::string& chars = "\t\n\v\f\r ");
203
+ static std::string& trim(std::string& str, const std::string& chars = "\t\n\v\f\r ");
204
+ ```
205
+
206
+ ### to_lower
207
+
208
+ ```
209
+ static std::string& to_lower(std::string& str);
210
+ ```
211
+
212
+ ### toUpper
213
+
214
+ ```
215
+ static std::string toUpper(const std::string& str);
216
+
217
+ ### createUuid
218
+
219
+ Generation uuid but before you need call once `WSJCppCore::initRandom();` (for example in main function)
220
+
221
+ ```
222
+ WSJCppCore::initRandom(); // once in main on start
223
+ std::string sUuid = WSJCppCore::createUuid();
224
+ std::cout << sUuid << std::endl;
225
+ ```
226
+
227
+ Example output:
228
+
229
+ ```
230
+ b49d92ae-f11c-f8bc-3a94-e7519e341927
231
+ ```
232
+
233
+ ### convertVoidToULong
234
+
235
+ ```
236
+ std::string s = "dddd";
237
+ unsigned long nPointer = WSJCppCore::convertVoidToULong((void * )&s);
238
+ std::cout << sPointerHex << std::endl;
239
+ static unsigned long convertVoidToULong(void * p);
240
+ ```
241
+
242
+ Example output:
243
+ ```
244
+ 140732802287936
245
+ ```
246
+
247
+ ### getPointerAsHex
248
+
249
+ ```
250
+ std::string s = "dddd";
251
+ std::string sPointerHex = WSJCppCore::getPointerAsHex((void * )&s);
252
+ std::cout << sPointerHex << std::endl;
253
+ ```
254
+
255
+ Example output:
256
+ ```
257
+ 0x7ffee8b04940
258
+ ```
259
+
260
+ ### extractURLProtocol
261
+
262
+ ```
263
+ std::string sProtocol = WSJCppCore::extractURLProtocol("https://github.com/wsjcpp ");
264
+ ```
265
+
266
+ ### getEnv
267
+
268
+ Get system environments
269
+ ```
270
+ std::string sValue;
271
+ if (WSJCppCore::getEnv("PATH", sValue)) {
272
+ std::cout << sValue << std::endl;
273
+ }
274
+ ```
275
+
276
+ Example output:
277
+ ```
278
+ /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
38
279
```
0 commit comments