MCPcopy Create free account
hub / github.com/NVIDIA/TensorRT / LogStreamConsumer

Class LogStreamConsumer

samples/common/logging.h:142–207  ·  view source on GitHub ↗

\class LogStreamConsumer \brief Convenience object used to facilitate use of C++ stream syntax when logging messages. Order of base classes is LogStreamConsumerBase and then std::ostream. This is because the LogStreamConsumerBase class is used to initialize the LogStreamConsumerBuffer member field in LogStreamConsumer and then the address of the buffer is passed to std::ostream. This is necessary

Source from the content-addressed store, hash-verified

140//! Please do not change the order of the parent classes.
141//!
142class LogStreamConsumer : protected LogStreamConsumerBase, public std::ostream
143{
144public:
145 //!
146 //! \brief Creates a LogStreamConsumer which logs messages with level severity.
147 //! Reportable severity determines if the messages are severe enough to be logged.
148 //!
149 LogStreamConsumer(nvinfer1::ILogger::Severity reportableSeverity, nvinfer1::ILogger::Severity severity)
150 : LogStreamConsumerBase(severityOstream(severity), severityPrefix(severity), severity <= reportableSeverity)
151 , std::ostream(&mBuffer) // links the stream buffer with the stream
152 , mShouldLog(severity <= reportableSeverity)
153 , mSeverity(severity)
154 {
155 }
156
157 LogStreamConsumer(LogStreamConsumer&& other) noexcept
158 : LogStreamConsumerBase(severityOstream(other.mSeverity), severityPrefix(other.mSeverity), other.mShouldLog)
159 , std::ostream(&mBuffer) // links the stream buffer with the stream
160 , mShouldLog(other.mShouldLog)
161 , mSeverity(other.mSeverity)
162 {
163 }
164 LogStreamConsumer(const LogStreamConsumer& other) = delete;
165 LogStreamConsumer() = delete;
166 ~LogStreamConsumer() override = default;
167 LogStreamConsumer& operator=(const LogStreamConsumer&) = delete;
168 LogStreamConsumer& operator=(LogStreamConsumer&&) = delete;
169
170 void setReportableSeverity(Severity reportableSeverity)
171 {
172 mShouldLog = mSeverity <= reportableSeverity;
173 mBuffer.setShouldLog(mShouldLog);
174 }
175
176 std::mutex& getMutex()
177 {
178 return mLogMutex;
179 }
180
181 bool getShouldLog() const
182 {
183 return mShouldLog;
184 }
185
186private:
187 static std::ostream& severityOstream(Severity severity)
188 {
189 return severity >= Severity::kINFO ? std::cout : std::cerr;
190 }
191
192 static std::string severityPrefix(Severity severity)
193 {
194 switch (severity)
195 {
196 case Severity::kINTERNAL_ERROR: return "[F] ";
197 case Severity::kERROR: return "[E] ";
198 case Severity::kWARNING: return "[W] ";
199 case Severity::kINFO: return "[I] ";

Callers 6

logMethod · 0.70
LOG_VERBOSEFunction · 0.70
LOG_INFOFunction · 0.70
LOG_WARNFunction · 0.70
LOG_ERRORFunction · 0.70
LOG_FATALFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected