-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d8ecb58
commit 412dc32
Showing
10 changed files
with
151 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#include "logger.hpp" | ||
#include "realm/util/logger.hpp" | ||
|
||
namespace realm { | ||
static_assert((int)util::Logger::Level::off == (int)logger::level::off); | ||
static_assert((int)util::Logger::Level::fatal == (int)logger::level::fatal); | ||
static_assert((int)util::Logger::Level::error == (int)logger::level::error); | ||
static_assert((int)util::Logger::Level::warn == (int)logger::level::warn); | ||
static_assert((int)util::Logger::Level::info == (int)logger::level::info); | ||
static_assert((int)util::Logger::Level::detail == (int)logger::level::detail); | ||
static_assert((int)util::Logger::Level::debug == (int)logger::level::debug); | ||
static_assert((int)util::Logger::Level::all == (int)logger::level::all); | ||
|
||
inline logger::level log_level_for_level(util::Logger::Level log_level) { | ||
switch (log_level) { | ||
case util::Logger::Level::off: | ||
return logger::level::off; | ||
case util::Logger::Level::fatal: | ||
return logger::level::fatal; | ||
case util::Logger::Level::error: | ||
return logger::level::error; | ||
case util::Logger::Level::warn: | ||
return logger::level::warn; | ||
case util::Logger::Level::info: | ||
return logger::level::info; | ||
case util::Logger::Level::detail: | ||
return logger::level::detail; | ||
case util::Logger::Level::debug: | ||
return logger::level::debug; | ||
case util::Logger::Level::trace: | ||
return logger::level::trace; | ||
case util::Logger::Level::all: | ||
return logger::level::all; | ||
} | ||
abort(); | ||
} | ||
|
||
inline util::Logger::Level log_level_for_level(logger::level log_level) { | ||
switch (log_level) { | ||
case logger::level::off: | ||
return util::Logger::Level::off; | ||
case logger::level::fatal: | ||
return util::Logger::Level::fatal; | ||
case logger::level::error: | ||
return util::Logger::Level::error; | ||
case logger::level::warn: | ||
return util::Logger::Level::warn; | ||
case logger::level::info: | ||
return util::Logger::Level::info; | ||
case logger::level::detail: | ||
return util::Logger::Level::detail; | ||
case logger::level::debug: | ||
return util::Logger::Level::debug; | ||
case logger::level::trace: | ||
return util::Logger::Level::trace; | ||
case logger::level::all: | ||
return util::Logger::Level::all; | ||
} | ||
abort(); | ||
} | ||
|
||
struct internal_logger : public util::Logger { | ||
internal_logger(std::shared_ptr<logger> &&s) { | ||
m_logger = std::move(s); | ||
} | ||
void do_log(util::Logger::Level level, const std::string &msg) override { | ||
m_logger->do_log(log_level_for_level(level), msg); | ||
} | ||
|
||
private: | ||
std::shared_ptr<logger> m_logger; | ||
}; | ||
|
||
void set_default_logger(std::shared_ptr<struct logger>&& l) { | ||
util::Logger::set_default_logger(std::make_shared<internal_logger>(std::move(l))); | ||
} | ||
void set_default_level_threshold(logger::level l) { | ||
util::Logger::set_default_level_threshold(log_level_for_level(l)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#ifndef REALM_LOGGER_HPP | ||
#define REALM_LOGGER_HPP | ||
|
||
#include <memory> | ||
#include <string> | ||
|
||
namespace realm { | ||
struct logger { | ||
/// Specifies criticality when passed to log(). Functions as a criticality | ||
/// threshold when returned from LevelThreshold::get(). | ||
/// | ||
/// error Be silent unless when there is an error. | ||
/// warn Be silent unless when there is an error or a warning. | ||
/// info Reveal information about what is going on, but in a | ||
/// minimalistic fashion to avoid general overhead from logging | ||
/// and to keep volume down. | ||
/// detail Same as 'info', but prioritize completeness over minimalism. | ||
/// debug Reveal information that can aid debugging, no longer paying | ||
/// attention to efficiency. | ||
/// trace A version of 'debug' that allows for very high volume | ||
/// output. | ||
enum class level { all = 0, | ||
trace = 1, | ||
debug = 2, | ||
detail = 3, | ||
info = 4, | ||
warn = 5, | ||
error = 6, | ||
fatal = 7, | ||
off = 8 }; | ||
virtual void do_log(level, const std::string &) = 0; | ||
}; | ||
void set_default_logger(std::shared_ptr<struct logger>&&); | ||
void set_default_level_threshold(logger::level); | ||
} | ||
|
||
#endif//REALM_LOGGER_HPP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters