BIND 10 trac1752, updated. 479bc91f229605831a6c96063f7eae9e0dffbb1f [1752] Try to fill the map with something
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Mar 23 13:20:58 UTC 2012
The branch, trac1752 has been updated
via 479bc91f229605831a6c96063f7eae9e0dffbb1f (commit)
via ea9bed38e817eb6247eccde3a651bacc0694ef07 (commit)
from afa0739e7aac991ccbb5350a664ab3e160039af3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 479bc91f229605831a6c96063f7eae9e0dffbb1f
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Fri Mar 23 14:19:21 2012 +0100
[1752] Try to fill the map with something
And see if going through the map costs something.
commit ea9bed38e817eb6247eccde3a651bacc0694ef07
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Fri Mar 23 14:14:03 2012 +0100
[1752] Add the map into logging
To see how much it slows things down if we want to look per-message
overrides.
-----------------------------------------------------------------------
Summary of changes:
src/bin/log-bench/log-bench.cc | 11 +++++++
src/bin/log-bench/results-permessage-empty | 2 +
src/bin/log-bench/results-permessage-not-empty | 2 +
src/lib/log/logger.cc | 35 +++++++++++++----------
src/lib/log/logger.h | 13 +++++---
src/lib/log/logger_impl.h | 31 ++++++++++++++-------
src/lib/log/macros.h | 10 +++---
7 files changed, 69 insertions(+), 35 deletions(-)
create mode 100644 src/bin/log-bench/results-permessage-empty
create mode 100644 src/bin/log-bench/results-permessage-not-empty
-----------------------------------------------------------------------
diff --git a/src/bin/log-bench/log-bench.cc b/src/bin/log-bench/log-bench.cc
index 7d153cb..5a81873 100644
--- a/src/bin/log-bench/log-bench.cc
+++ b/src/bin/log-bench/log-bench.cc
@@ -26,6 +26,17 @@ public:
int main(int, const char*[]) {
isc::log::initLogger("test", isc::log::INFO, 0, NULL);
+ const char* stuffing[] = {
+ "MESSAGE_1",
+ "ANOTHER_MESSAGE",
+ "SOMETHING_DIFFERENT",
+ "ZZZZZ_SOMETHING_AT_THE_END",
+ NULL
+ };
+ for (const char** message(stuffing); *message; ++ message) {
+ isc::log::MessageID id(*message);
+ logger.overrides()[id] = true;
+ }
BenchMark<NoPrint>(iterations * 100, NoPrint());
BenchMark<Print>(iterations, Print());
return 0;
diff --git a/src/bin/log-bench/results-permessage-empty b/src/bin/log-bench/results-permessage-empty
new file mode 100644
index 0000000..6d402b6
--- /dev/null
+++ b/src/bin/log-bench/results-permessage-empty
@@ -0,0 +1,2 @@
+Performed 100000000 iterations in 8.929929s (11198297.32ips)
+Performed 1000000 iterations in 4.914866s (203464.35ips)
diff --git a/src/bin/log-bench/results-permessage-not-empty b/src/bin/log-bench/results-permessage-not-empty
new file mode 100644
index 0000000..dee917b
--- /dev/null
+++ b/src/bin/log-bench/results-permessage-not-empty
@@ -0,0 +1,2 @@
+Performed 100000000 iterations in 13.560867s (7374159.78ips)
+Performed 1000000 iterations in 5.038913s (198455.50ips)
diff --git a/src/lib/log/logger.cc b/src/lib/log/logger.cc
index d10e979..bbc506a 100644
--- a/src/lib/log/logger.cc
+++ b/src/lib/log/logger.cc
@@ -91,28 +91,28 @@ Logger::getEffectiveDebugLevel() {
// Check on the current severity settings
bool
-Logger::isDebugEnabled(int dbglevel) {
- return (getLoggerPtr()->isDebugEnabled(dbglevel));
+Logger::isDebugEnabled(const MessageID& id, int dbglevel) {
+ return (getLoggerPtr()->isDebugEnabled(id, dbglevel));
}
bool
-Logger::isInfoEnabled() {
- return (getLoggerPtr()->isInfoEnabled());
+Logger::isInfoEnabled(const MessageID& id) {
+ return (getLoggerPtr()->isInfoEnabled(id));
}
bool
-Logger::isWarnEnabled() {
- return (getLoggerPtr()->isWarnEnabled());
+Logger::isWarnEnabled(const MessageID& id) {
+ return (getLoggerPtr()->isWarnEnabled(id));
}
bool
-Logger::isErrorEnabled() {
- return (getLoggerPtr()->isErrorEnabled());
+Logger::isErrorEnabled(const MessageID& id) {
+ return (getLoggerPtr()->isErrorEnabled(id));
}
bool
-Logger::isFatalEnabled() {
- return (getLoggerPtr()->isFatalEnabled());
+Logger::isFatalEnabled(const MessageID& id) {
+ return (getLoggerPtr()->isFatalEnabled(id));
}
// Format a message: looks up the message text in the dictionary and formats
@@ -131,7 +131,7 @@ Logger::output(const Severity& severity, const std::string& message) {
Logger::Formatter
Logger::debug(int dbglevel, const isc::log::MessageID& ident) {
- if (isDebugEnabled(dbglevel)) {
+ if (isDebugEnabled(ident, dbglevel)) {
return (Formatter(DEBUG, getLoggerPtr()->lookupMessage(ident),
this));
} else {
@@ -141,7 +141,7 @@ Logger::debug(int dbglevel, const isc::log::MessageID& ident) {
Logger::Formatter
Logger::info(const isc::log::MessageID& ident) {
- if (isInfoEnabled()) {
+ if (isInfoEnabled(ident)) {
return (Formatter(INFO, getLoggerPtr()->lookupMessage(ident),
this));
} else {
@@ -151,7 +151,7 @@ Logger::info(const isc::log::MessageID& ident) {
Logger::Formatter
Logger::warn(const isc::log::MessageID& ident) {
- if (isWarnEnabled()) {
+ if (isWarnEnabled(ident)) {
return (Formatter(WARN, getLoggerPtr()->lookupMessage(ident),
this));
} else {
@@ -161,7 +161,7 @@ Logger::warn(const isc::log::MessageID& ident) {
Logger::Formatter
Logger::error(const isc::log::MessageID& ident) {
- if (isErrorEnabled()) {
+ if (isErrorEnabled(ident)) {
return (Formatter(ERROR, getLoggerPtr()->lookupMessage(ident),
this));
} else {
@@ -171,7 +171,7 @@ Logger::error(const isc::log::MessageID& ident) {
Logger::Formatter
Logger::fatal(const isc::log::MessageID& ident) {
- if (isFatalEnabled()) {
+ if (isFatalEnabled(ident)) {
return (Formatter(FATAL, getLoggerPtr()->lookupMessage(ident),
this));
} else {
@@ -179,6 +179,11 @@ Logger::fatal(const isc::log::MessageID& ident) {
}
}
+std::map<MessageID, bool>&
+Logger::overrides() {
+ return getLoggerPtr()->overrides_;
+}
+
// Comparison (testing only)
bool
diff --git a/src/lib/log/logger.h b/src/lib/log/logger.h
index 5715bc4..073367b 100644
--- a/src/lib/log/logger.h
+++ b/src/lib/log/logger.h
@@ -19,6 +19,7 @@
#include <cstdlib>
#include <string>
#include <cstring>
+#include <map>
#include <exceptions/exceptions.h>
#include <log/logger_level.h>
@@ -196,19 +197,21 @@ public:
/// \param dbglevel Level for which debugging is checked. Debugging is
/// enabled only if the logger has DEBUG enabled and if the dbglevel
/// checked is less than or equal to the debug level set for the logger.
- virtual bool isDebugEnabled(int dbglevel = MIN_DEBUG_LEVEL);
+ virtual bool isDebugEnabled(const MessageID& ident, int dbglevel = MIN_DEBUG_LEVEL);
/// \brief Is INFO Enabled?
- virtual bool isInfoEnabled();
+ virtual bool isInfoEnabled(const MessageID& ident);
/// \brief Is WARNING Enabled?
- virtual bool isWarnEnabled();
+ virtual bool isWarnEnabled(const MessageID& ident);
/// \brief Is ERROR Enabled?
- virtual bool isErrorEnabled();
+ virtual bool isErrorEnabled(const MessageID& ident);
/// \brief Is FATAL Enabled?
- virtual bool isFatalEnabled();
+ virtual bool isFatalEnabled(const MessageID& ident);
+
+ std::map<MessageID, bool>& overrides();
/// \brief Output Debug Message
///
diff --git a/src/lib/log/logger_impl.h b/src/lib/log/logger_impl.h
index 90bd41a..e3b87fd 100644
--- a/src/lib/log/logger_impl.h
+++ b/src/lib/log/logger_impl.h
@@ -121,35 +121,45 @@ public:
/// the current effective severity level is not DEBUG.
virtual int getEffectiveDebugLevel();
+private:
+ bool checkEnabled(const log4cplus::LogLevel& level, const MessageID& id) {
+ const std::map<MessageID, bool>::const_iterator it(overrides_.find(id));
+ if (it != overrides_.end()) {
+ return (it->second);
+ } else {
+ return (logger_.isEnabledFor(level));
+ }
+ }
+public:
/// \brief Returns if Debug Message Should Be Output
///
/// \param dbglevel Level for which debugging is checked. Debugging is
/// enabled only if the logger has DEBUG enabled and if the dbglevel
/// checked is less than or equal to the debug level set for the logger.
- virtual bool isDebugEnabled(int dbglevel = MIN_DEBUG_LEVEL) {
+ virtual bool isDebugEnabled(const MessageID& id, int dbglevel = MIN_DEBUG_LEVEL) {
Level level(DEBUG, dbglevel);
- return logger_.isEnabledFor(LoggerLevelImpl::convertFromBindLevel(level));
+ return (checkEnabled(LoggerLevelImpl::convertFromBindLevel(level), id));
}
/// \brief Is INFO Enabled?
- virtual bool isInfoEnabled() {
- return (logger_.isEnabledFor(log4cplus::INFO_LOG_LEVEL));
+ virtual bool isInfoEnabled(const MessageID& id) {
+ return (checkEnabled(log4cplus::INFO_LOG_LEVEL, id));
}
/// \brief Is WARNING Enabled?
- virtual bool isWarnEnabled() {
- return (logger_.isEnabledFor(log4cplus::WARN_LOG_LEVEL));
+ virtual bool isWarnEnabled(const MessageID& id) {
+ return (checkEnabled(log4cplus::WARN_LOG_LEVEL, id));
}
/// \brief Is ERROR Enabled?
- virtual bool isErrorEnabled() {
- return (logger_.isEnabledFor(log4cplus::ERROR_LOG_LEVEL));
+ virtual bool isErrorEnabled(const MessageID& id) {
+ return (checkEnabled(log4cplus::ERROR_LOG_LEVEL, id));
}
/// \brief Is FATAL Enabled?
- virtual bool isFatalEnabled() {
- return (logger_.isEnabledFor(log4cplus::FATAL_LOG_LEVEL));
+ virtual bool isFatalEnabled(const MessageID& id) {
+ return (checkEnabled(log4cplus::FATAL_LOG_LEVEL, id));
}
/// \brief Raw output
@@ -176,6 +186,7 @@ public:
bool operator==(const LoggerImpl& other) {
return (name_ == other.name_);
}
+ std::map<MessageID, bool> overrides_;
private:
std::string name_; ///< Full name of this logger
diff --git a/src/lib/log/macros.h b/src/lib/log/macros.h
index 42fb42e..1172a1e 100644
--- a/src/lib/log/macros.h
+++ b/src/lib/log/macros.h
@@ -20,31 +20,31 @@
/// \brief Macro to conveniently test debug output and log it
#define LOG_DEBUG(LOGGER, LEVEL, MESSAGE) \
- if (!(LOGGER).isDebugEnabled((LEVEL))) { \
+ if (!(LOGGER).isDebugEnabled((MESSAGE), (LEVEL))) { \
} else \
(LOGGER).debug((LEVEL), (MESSAGE))
/// \brief Macro to conveniently test info output and log it
#define LOG_INFO(LOGGER, MESSAGE) \
- if (!(LOGGER).isInfoEnabled()) { \
+ if (!(LOGGER).isInfoEnabled((MESSAGE))) { \
} else \
(LOGGER).info((MESSAGE))
/// \brief Macro to conveniently test warn output and log it
#define LOG_WARN(LOGGER, MESSAGE) \
- if (!(LOGGER).isWarnEnabled()) { \
+ if (!(LOGGER).isWarnEnabled((MESSAGE))) { \
} else \
(LOGGER).warn((MESSAGE))
/// \brief Macro to conveniently test error output and log it
#define LOG_ERROR(LOGGER, MESSAGE) \
- if (!(LOGGER).isErrorEnabled()) { \
+ if (!(LOGGER).isErrorEnabled((MESSAGE))) { \
} else \
(LOGGER).error((MESSAGE))
/// \brief Macro to conveniently test fatal output and log it
#define LOG_FATAL(LOGGER, MESSAGE) \
- if (!(LOGGER).isFatalEnabled()) { \
+ if (!(LOGGER).isFatalEnabled((MESSAGE))) { \
} else \
(LOGGER).fatal((MESSAGE))
More information about the bind10-changes
mailing list