aboutsummaryrefslogtreecommitdiff
path: root/contrib/native/client/src/clientlib/logger.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/native/client/src/clientlib/logger.hpp')
-rw-r--r--contrib/native/client/src/clientlib/logger.hpp85
1 files changed, 49 insertions, 36 deletions
diff --git a/contrib/native/client/src/clientlib/logger.hpp b/contrib/native/client/src/clientlib/logger.hpp
index e3edb1329..7baf50c41 100644
--- a/contrib/native/client/src/clientlib/logger.hpp
+++ b/contrib/native/client/src/clientlib/logger.hpp
@@ -1,20 +1,20 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
#ifndef __LOGGER_H
#define __LOGGER_H
@@ -25,47 +25,60 @@
#include <string>
#include <stdio.h>
+#include <boost/thread/mutex.hpp>
#include "drill/common.hpp"
namespace Drill{
class Logger{
public:
- Logger(){}
+ Logger(){
+ m_level = LOG_ERROR;
+ m_pOutFileStream = NULL;
+ m_pOutStream = &std::cout;
+ }
~Logger(){ }
- static void init(const char* path);
- static void close();
- static std::ostream& log(logLevel_t level);
- static std::string levelAsString(logLevel_t level) {
+ void init(const char* path);
+ void close();
+ std::ostream& log(logLevel_t level);
+ std::string levelAsString(logLevel_t level) {
static const char* const levelNames[] = {
- "TRACE",
- "DEBUG",
- "INFO",
+ "TRACE ",
+ "DEBUG ",
+ "INFO ",
"WARNING",
- "ERROR",
- "FATAL"
+ "ERROR ",
+ "FATAL "
};
- return levelNames[level];
+ return levelNames[level>=LOG_TRACE && level<=LOG_FATAL?level:LOG_ERROR];
}
// The logging level
- static logLevel_t s_level;
- static std::ostream* s_pOutStream;
+ logLevel_t m_level;
+ std::ostream* m_pOutStream;
+ boost::mutex m_logMutex;
private:
- //static std::ostream* s_pOutStream;
- static std::ofstream* s_pOutFileStream;
- static char* s_filepath;
+ std::ofstream* m_pOutFileStream;
+ std::string m_filepath;
}; // Logger
-std::string getTime();
-std::string getTid();
+ Logger& getLogger();
+ std::string getTime();
+ std::string getTid();
+
+#define DRILL_MT_LOG(LOG) \
+ { \
+ boost::lock_guard<boost::mutex> logLock(getLogger().m_logMutex); \
+ LOG \
+ }
#define DRILL_LOG(level) \
- if (Logger::s_pOutStream==NULL || level < Drill::Logger::s_level); \
- else Drill::Logger::log(level) \
+ if (getLogger().m_pOutStream==NULL || level < getLogger().m_level); \
+ else getLogger().log(level) \
+
} // namespace Drill