Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions src/fury/util/logging.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@

namespace std {
template <> struct hash<fury::FuryLogLevel> {
size_t operator()(const fury::FuryLogLevel &t) const { return size_t(t); }
size_t operator()(fury::FuryLogLevel t) const { return size_t(t); }
};
} // namespace std

namespace fury {

const FuryLogLevel fury_severity_threshold = FuryLog::GetLogLevel();

std::string GetCallTrace() {
std::vector<void *> local_stack;
local_stack.resize(100);
Expand All @@ -45,15 +47,15 @@ std::string GetCallTrace() {
return output;
}

std::string LogLevelAsString(FuryLogLevel level) {
static std::unordered_map<FuryLogLevel, std::string> level_to_str = {
{FuryLogLevel::DEBUG, "DEBUG"}, {FuryLogLevel::INFO, "INFO"},
{FuryLogLevel::WARNING, "WARNING"}, {FuryLogLevel::ERROR, "ERROR"},
{FuryLogLevel::FATAL, "FATAL"},
};
std::unordered_map<FuryLogLevel, std::string> log_level_to_str = {
{FuryLogLevel::DEBUG, "DEBUG"}, {FuryLogLevel::INFO, "INFO"},
{FuryLogLevel::WARNING, "WARNING"}, {FuryLogLevel::ERROR, "ERROR"},
{FuryLogLevel::FATAL, "FATAL"},
};

auto it = level_to_str.find(level);
if (it == level_to_str.end()) {
std::string LogLevelAsString(FuryLogLevel level) {
auto it = log_level_to_str.find(level);
if (it == log_level_to_str.end()) {
return "UNKNOWN";
}
return it->second;
Expand All @@ -76,18 +78,18 @@ FuryLogLevel FuryLog::GetLogLevel() {
} else if (data == "fatal") {
severity_threshold = FuryLogLevel::FATAL;
} else {
FURY_LOG(WARNING) << "Unrecognized setting of FuryLogLevel=" << var_value;
FURY_LOG_INTERNAL(WARNING)
<< "Unrecognized setting of FuryLogLevel=" << var_value;
}
FURY_LOG(INFO)
FURY_LOG_INTERNAL(INFO)
<< "Set ray log level from environment variable RAY_BACKEND_LOG_LEVEL"
<< " to " << static_cast<int>(severity_threshold);
}
return severity_threshold;
}

FuryLog::FuryLog(const char *file_name, int line_number, FuryLogLevel severity)
: is_enabled_(severity >= __fury_severity_threshold__),
severity_(severity) {
: severity_(severity) {
Stream() << "[" << FormatTimePoint(std::chrono::system_clock::now()) << "] "
<< LogLevelAsString(severity) << " " << file_name << ":"
<< line_number << ": ";
Expand All @@ -102,10 +104,8 @@ FuryLog::~FuryLog() {
Stream() << "\n" << std::endl;
}

bool FuryLog::IsEnabled() const { return is_enabled_; }

bool FuryLog::IsLevelEnabled(FuryLogLevel log_level) {
return log_level >= __fury_severity_threshold__;
return log_level >= fury_severity_threshold;
}

} // namespace fury
41 changes: 8 additions & 33 deletions src/fury/util/logging.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,19 @@ enum class FuryLogLevel {
FATAL = 3
};

#define FURY_LOG_INTERNAL(level) ::fury::FuryLog(__FILE__, __LINE__, level)
#define FURY_LOG_INTERNAL(level) \
::fury::FuryLog(__FILE__, __LINE__, ::fury::FuryLogLevel::level)

#define FURY_LOG_ENABLED(level) \
fury::FuryLog::IsLevelEnabled(fury::FuryLogLevel::level)
::fury::FuryLog::IsLevelEnabled(::fury::FuryLogLevel::level)

#define FURY_LOG(level) \
if (fury::FuryLog::IsLevelEnabled(fury::FuryLogLevel::level)) \
FURY_LOG_INTERNAL(fury::FuryLogLevel::level)

#define FURY_IGNORE_EXPR(expr) ((void)(expr))
if (FURY_LOG_ENABLED(level)) \
FURY_LOG_INTERNAL(level)

#define FURY_CHECK(condition) \
(condition) \
? FURY_IGNORE_EXPR(0) \
: ::fury::Voidify() & \
::fury::FuryLog(__FILE__, __LINE__, fury::FuryLogLevel::FATAL) \
<< " Check failed: " #condition " "
if (!(condition)) \
FURY_LOG_INTERNAL(FATAL) << " Check failed: " #condition " "

#define FURY_CHECK_OP(left, op, right) \
do { \
Expand All @@ -75,17 +71,10 @@ class FuryLog {
virtual ~FuryLog();

template <typename T> FuryLog &operator<<(const T &t) {
if (IsEnabled()) {
Stream() << t;
}
Stream() << t;
return *this;
};

/// Return whether or not current logging instance is enabled.
///
/// \return True if logging is enabled and false otherwise.
virtual bool IsEnabled() const;

/// Return whether or not the log level is enabled in current setting.
///
/// \param log_level The input log level to test.
Expand All @@ -98,22 +87,8 @@ class FuryLog {
virtual std::ostream &Stream() { return std::cerr; };

private:
/// True if log messages should be logged and false if they should be ignored.
bool is_enabled_;
/// log level.
FuryLogLevel severity_;
};

const FuryLogLevel __fury_severity_threshold__ = ::fury::FuryLog::GetLogLevel();

// This class make FURY_CHECK compilation pass to change the << operator to
// void.
class Voidify {
public:
Voidify() {}
// This has to be an operator with a precedence lower than << but
// higher than ?:
void operator&(FuryLog &) {}
};

} // namespace fury
2 changes: 0 additions & 2 deletions src/fury/util/status.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@

namespace fury {

#define FURY_IGNORE_EXPR(expr) ((void)(expr))

// Return the given status if it is not OK.
#define FURY_RETURN_NOT_OK(s) \
do { \
Expand Down