|
ROOT
Reference Guide |
|
Go to the documentation of this file.
28 namespace Experimental {
47 return static_cast<ELogLevel>(
static_cast<int>(severity) + offset);
150 void PushFront(std::unique_ptr<RLogHandler> handler) {
fHandlers.emplace_front(std::move(handler)); }
153 void PushBack(std::unique_ptr<RLogHandler> handler) {
fHandlers.emplace_back(std::move(handler)); }
213 class RLogBuilder :
public std::ostringstream {
220 const std::string &funcname)
221 : fEntry(level, channel, {filename, funcname,
line})
243 class RLogScopedVerbosity {
249 : fChannel(&channel), fPrevLevel(channel.SetVerbosity(verbosity))
252 explicit RLogScopedVerbosity(
ELogLevel verbosity) : RLogScopedVerbosity(RLogManager::Get(), verbosity) {}
253 ~RLogScopedVerbosity() { fChannel->
SetVerbosity(fPrevLevel); }
260 class RLogScopedDiagCount {
261 RLogDiagCount *fCounter =
nullptr;
263 long long fInitialWarnings = 0;
265 long long fInitialErrors = 0;
267 long long fInitialFatalErrors = 0;
272 explicit RLogScopedDiagCount(RLogDiagCount &
cnt)
273 : fCounter(&
cnt), fInitialWarnings(
cnt.GetNumWarnings()), fInitialErrors(
cnt.GetNumErrors()),
274 fInitialFatalErrors(
cnt.GetNumFatalErrors())
279 RLogScopedDiagCount() : RLogScopedDiagCount(RLogManager::Get()) {}
282 long long GetAccumulatedWarnings()
const {
return fCounter->GetNumWarnings() - fInitialWarnings; }
285 long long GetAccumulatedErrors()
const {
return fCounter->GetNumErrors() - fInitialErrors; }
288 long long GetAccumulatedFatalErrors()
const {
return fCounter->GetNumFatalErrors() - fInitialFatalErrors; }
291 bool HasWarningOccurred()
const {
return GetAccumulatedWarnings(); }
294 bool HasErrorOccurred()
const {
return GetAccumulatedErrors() + GetAccumulatedFatalErrors(); }
297 bool HasErrorOrWarningOccurred()
const {
return HasWarningOccurred() || HasErrorOccurred(); }
302 inline RLogChannel &GetChannelOrManager()
306 inline RLogChannel &GetChannelOrManager(RLogChannel &channel)
316 return mgr.GetVerbosity();
323 #if defined(_MSC_VER)
324 #define R__LOG_PRETTY_FUNCTION __FUNCSIG__
326 #define R__LOG_PRETTY_FUNCTION __PRETTY_FUNCTION__
344 #define R__LOG_TO_CHANNEL(SEVERITY, CHANNEL) \
345 ((SEVERITY < ROOT::Experimental::ELogLevel::kInfo + 0) || \
346 ROOT::Experimental::Internal::GetChannelOrManager(CHANNEL).GetEffectiveVerbosity( \
347 ROOT::Experimental::RLogManager::Get()) >= SEVERITY) && \
348 ROOT::Experimental::Detail::RLogBuilder(SEVERITY, ROOT::Experimental::Internal::GetChannelOrManager(CHANNEL), \
349 __FILE__, __LINE__, R__LOG_PRETTY_FUNCTION)
361 #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__)
362 #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__)
363 #define R__LOG_WARNING(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kWarning, __VA_ARGS__)
364 #define R__LOG_INFO(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kInfo, __VA_ARGS__)
365 #define R__LOG_DEBUG(DEBUGLEVEL, ...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kDebug + DEBUGLEVEL, __VA_ARGS__)
std::atomic< long long > fNumFatalErrors
Number of errors.
ELogLevel operator+(ELogLevel severity, int offset)
@ kWarning
Warnings about likely unexpected behavior.
std::unique_ptr< RLogHandler > Remove(RLogHandler *handler)
Remove and return the given log handler. Returns nullptr if not found.
@ kFatal
An error which causes further processing to be unreliable.
RLogManager(std::unique_ptr< RLogHandler > lh)
Initialize taking a RLogHandler.
std::atomic< long long > fNumErrors
Number of warnings.
bool Emit(const RLogEntry &entry) override
Emit a log entry.
ELogLevel GetVerbosity() const
@ kDebug
Debug information; only useful for developers; can have added verbosity up to 255-kDebug.
A log configuration for a channel, e.g.
RLogChannel(ELogLevel verbosity)
Construct an anonymous channel with a default vebosity.
RLogChannel()=default
Construct an anonymous channel.
void PushFront(std::unique_ptr< RLogHandler > handler)
Add a RLogHandler in the front - to be called before all others.
A diagnostic that can be emitted by the RLogManager.
std::string fName
Name as shown in diagnostics.
ELogLevel GetEffectiveVerbosity(const RLogManager &mgr) const
A diagnostic location, part of an RLogEntry.
std::atomic< long long > fNumWarnings
RLogEntry(ELogLevel level, RLogChannel &channel, const RLogLocation &loc)
ELogLevel fVerbosity
Verbosity of this channel. By default, use the global verbosity.
Keep track of emitted errors and warnings.
void PushBack(std::unique_ptr< RLogHandler > handler)
Add a RLogHandler in the back - to be called after all others.
ELogLevel
Kinds of diagnostics.
long long GetNumWarnings() const
Number of fatal errors.
virtual bool Emit(const RLogEntry &entry)=0
Emit a log entry.
void swap(RDirectoryEntry &e1, RDirectoryEntry &e2) noexcept
@ kInfo
Informational messages; used for instance for tracing.
RLogEntry(ELogLevel level, RLogChannel &channel)
const std::string & GetName() const
static RLogManager & Get()
long long GetNumFatalErrors() const
Returns the current number of fatal errors.
std::list< std::unique_ptr< RLogHandler > > fHandlers
A RLogHandler that multiplexes diagnostics to different client RLogHandlers and keeps track of the su...
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Abstract RLogHandler base class.
RLogChannel(const std::string &name)
Construct a log channel given its name, which is part of the diagnostics.
long long GetNumErrors() const
Returns the current number of errors.
ELogLevel SetVerbosity(ELogLevel verbosity)
void Increment(ELogLevel severity)
Increase warning or error count.