19
19
20
20
#include " NvInferRuntimeCommon.h"
21
21
22
+ #include < atomic>
22
23
#include < cassert>
23
24
#include < ctime>
24
25
#include < iomanip>
25
26
#include < iostream>
26
27
#include < ostream>
27
28
#include < sstream>
28
29
#include < string>
30
+ #include < thread>
29
31
30
32
namespace tensorrt_common
31
33
{
@@ -200,7 +202,15 @@ class Logger : public nvinfer1::ILogger // NOLINT
200
202
public:
201
203
// Logger(Severity severity = Severity::kWARNING)
202
204
// Logger(Severity severity = Severity::kVERBOSE)
203
- explicit Logger (Severity severity = Severity::kINFO ) : mReportableSeverity(severity) {}
205
+ explicit Logger (Severity severity = Severity::kINFO )
206
+ : mReportableSeverity(severity), mVerbose(true ), mThrottleStopFlag(false )
207
+ {
208
+ }
209
+
210
+ explicit Logger (const bool verbose, Severity severity = Severity::kINFO )
211
+ : mReportableSeverity(severity), mVerbose(verbose), mThrottleStopFlag(false )
212
+ {
213
+ }
204
214
205
215
// !
206
216
// ! \enum TestResult
@@ -234,7 +244,44 @@ class Logger : public nvinfer1::ILogger // NOLINT
234
244
// !
235
245
void log (Severity severity, const char * msg) noexcept override
236
246
{
237
- LogStreamConsumer (mReportableSeverity , severity) << " [TRT] " << std::string (msg) << std::endl;
247
+ if (mVerbose ) {
248
+ LogStreamConsumer (mReportableSeverity , severity) << " [TRT] " << std::string (msg) << std::endl;
249
+ }
250
+ }
251
+
252
+ /* *
253
+ * @brief Logging with throttle.
254
+ *
255
+ * @example
256
+ * Logger logger();
257
+ * auto log_thread = logger.log_throttle(nvinfer1::ILogger::Severity::kINFO, "SOME MSG", 1);
258
+ * // some operation
259
+ * logger.stop_throttle(log_thread);
260
+ *
261
+ * @param severity
262
+ * @param msg
263
+ * @param duration
264
+ * @return std::thread
265
+ *
266
+ */
267
+ std::thread log_throttle (Severity severity, const char * msg, const int duration) noexcept
268
+ {
269
+ mThrottleStopFlag .store (false );
270
+ auto log_func = [this ](Severity s, const char * m, const int d) {
271
+ while (!mThrottleStopFlag .load ()) {
272
+ this ->log (s, m);
273
+ std::this_thread::sleep_for (std::chrono::seconds (d));
274
+ }
275
+ };
276
+
277
+ std::thread log_thread (log_func, severity, msg, duration);
278
+ return log_thread;
279
+ }
280
+
281
+ void stop_throttle (std::thread & log_thread) noexcept
282
+ {
283
+ mThrottleStopFlag .store (true );
284
+ log_thread.join ();
238
285
}
239
286
240
287
// !
@@ -430,6 +477,8 @@ class Logger : public nvinfer1::ILogger // NOLINT
430
477
}
431
478
432
479
Severity mReportableSeverity ;
480
+ bool mVerbose ;
481
+ std::atomic<bool > mThrottleStopFlag ;
433
482
};
434
483
435
484
namespace
@@ -444,7 +493,7 @@ namespace
444
493
// !
445
494
inline LogStreamConsumer LOG_VERBOSE (const Logger & logger)
446
495
{
447
- return LogStreamConsumer (logger.getReportableSeverity (), Severity::kVERBOSE );
496
+ return LogStreamConsumer (logger.getReportableSeverity (), Severity::kVERBOSE ) << " [TRT] " ;
448
497
}
449
498
450
499
// !
@@ -456,7 +505,7 @@ inline LogStreamConsumer LOG_VERBOSE(const Logger & logger)
456
505
// !
457
506
inline LogStreamConsumer LOG_INFO (const Logger & logger)
458
507
{
459
- return LogStreamConsumer (logger.getReportableSeverity (), Severity::kINFO );
508
+ return LogStreamConsumer (logger.getReportableSeverity (), Severity::kINFO ) << " [TRT] " ;
460
509
}
461
510
462
511
// !
@@ -468,7 +517,7 @@ inline LogStreamConsumer LOG_INFO(const Logger & logger)
468
517
// !
469
518
inline LogStreamConsumer LOG_WARN (const Logger & logger)
470
519
{
471
- return LogStreamConsumer (logger.getReportableSeverity (), Severity::kWARNING );
520
+ return LogStreamConsumer (logger.getReportableSeverity (), Severity::kWARNING ) << " [TRT] " ;
472
521
}
473
522
474
523
// !
@@ -480,7 +529,7 @@ inline LogStreamConsumer LOG_WARN(const Logger & logger)
480
529
// !
481
530
inline LogStreamConsumer LOG_ERROR (const Logger & logger)
482
531
{
483
- return LogStreamConsumer (logger.getReportableSeverity (), Severity::kERROR );
532
+ return LogStreamConsumer (logger.getReportableSeverity (), Severity::kERROR ) << " [TRT] " ;
484
533
}
485
534
486
535
// !
@@ -494,7 +543,7 @@ inline LogStreamConsumer LOG_ERROR(const Logger & logger)
494
543
// !
495
544
inline LogStreamConsumer LOG_FATAL (const Logger & logger)
496
545
{
497
- return LogStreamConsumer (logger.getReportableSeverity (), Severity::kINTERNAL_ERROR );
546
+ return LogStreamConsumer (logger.getReportableSeverity (), Severity::kINTERNAL_ERROR ) << " [TRT] " ;
498
547
}
499
548
500
549
} // anonymous namespace
0 commit comments