summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHuynh Tran <nthuynh75@gmail.com>2005-06-19 09:05:46 +0000
committerHuynh Tran <nthuynh75@gmail.com>2005-06-19 09:05:46 +0000
commitf625c74501185e0ce8064ea704efc2eaeaf44e19 (patch)
tree2bf33c33e30ffac17ac62f4f60f4129aa039203a /src
parent8b9ecdf0b86890d34bab10e79a1ba46dcccd894e (diff)
downloadmanaserv-f625c74501185e0ce8064ea704efc2eaeaf44e19.tar.gz
manaserv-f625c74501185e0ce8064ea704efc2eaeaf44e19.tar.bz2
manaserv-f625c74501185e0ce8064ea704efc2eaeaf44e19.tar.xz
manaserv-f625c74501185e0ce8064ea704efc2eaeaf44e19.zip
Added tee mode to Logger.
Diffstat (limited to 'src')
-rw-r--r--src/utils/logger.cpp77
-rw-r--r--src/utils/logger.h12
2 files changed, 83 insertions, 6 deletions
diff --git a/src/utils/logger.cpp b/src/utils/logger.cpp
index 5010ed66..bfba7abe 100644
--- a/src/utils/logger.cpp
+++ b/src/utils/logger.cpp
@@ -100,12 +100,32 @@ Logger::setTimestamp(bool flag)
/**
+ * Set tee mode.
+ */
+void
+Logger::setTeeMode(bool flag)
+ throw()
+{
+ mTeeMode = flag;
+}
+
+
+/**
* Log a generic message.
*/
void
Logger::log(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cout), msg);
+ if (mTeeMode) {
+ log(std::cout, msg);
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg);
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cout), msg);
+ }
}
@@ -115,7 +135,16 @@ Logger::log(const std::string& msg)
void
Logger::debug(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cout), msg, "[DBG]");
+ if (mTeeMode) {
+ log(std::cout, msg, "[DBG]");
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg, "[DBG]");
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cout), msg, "[DBG]");
+ }
}
@@ -125,7 +154,16 @@ Logger::debug(const std::string& msg)
void
Logger::info(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cout), msg, "[INF]");
+ if (mTeeMode) {
+ log(std::cout, msg, "[INF]");
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg, "[INF]");
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cout), msg, "[INF]");
+ }
}
@@ -135,7 +173,16 @@ Logger::info(const std::string& msg)
void
Logger::warn(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[WRN]");
+ if (mTeeMode) {
+ log(std::cerr, msg, "[WRN]");
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg, "[WRN]");
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[WRN]");
+ }
}
@@ -145,7 +192,16 @@ Logger::warn(const std::string& msg)
void
Logger::error(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[ERR]");
+ if (mTeeMode) {
+ log(std::cerr, msg, "[ERR]");
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg, "[ERR]");
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[ERR]");
+ }
}
@@ -155,7 +211,16 @@ Logger::error(const std::string& msg)
void
Logger::fatal(const std::string& msg)
{
- log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[FTL]");
+ if (mTeeMode) {
+ log(std::cerr, msg, "[FTL]");
+
+ if (mLogFile.is_open()) {
+ log(mLogFile, msg, "[FTL]");
+ }
+ }
+ else {
+ log((mLogFile.is_open() ? mLogFile : std::cerr), msg, "[FTL]");
+ }
#ifdef WIN32
MessageBox(NULL, msg.c_str(), "Fatal error", MB_ICONERROR | MB_OK);
diff --git a/src/utils/logger.h b/src/utils/logger.h
index be8d7d3e..bdfa905e 100644
--- a/src/utils/logger.h
+++ b/src/utils/logger.h
@@ -120,6 +120,17 @@ class Logger: public Singleton<Logger>
/**
+ * Set tee mode.
+ *
+ * @param flag if true, write messages to both the standard (or error)
+ * output and the log file (if set) (default = false).
+ */
+ void
+ setTeeMode(bool flag = false)
+ throw();
+
+
+ /**
* Log a generic message.
*
* @param msg the message to log.
@@ -240,6 +251,7 @@ class Logger: public Singleton<Logger>
private:
std::ofstream mLogFile; /**< the log file */
bool mHasTimestamp; /**< the timestamp flag */
+ bool mTeeMode; /**< the tee mode flag */
};