LoggerManager.h
Go to the documentation of this file.
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013-2016, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_FRAMEWORK_LOGGERMANAGER_H
17 #define SURGSIM_FRAMEWORK_LOGGERMANAGER_H
18 
19 #include <boost/thread/mutex.hpp>
20 #include <unordered_map>
21 #include <vector>
22 
23 namespace SurgSim
24 {
25 namespace Framework
26 {
27 
28 class Logger;
29 class LogOutput;
30 
34 {
35 public:
37  LoggerManager();
38 
41 
44  void setDefaultOutput(std::shared_ptr<LogOutput> output);
45 
47  std::shared_ptr<LogOutput> getDefaultOutput() const;
48 
51  std::shared_ptr<Logger> getDefaultLogger();
52 
57  std::shared_ptr<Logger> getLogger(const std::string& name);
58 
61  void setThreshold(int threshold);
62 
67  void setThreshold(const std::string& path, int threshold);
68 
71  int getThreshold() const;
72 
73 private:
75  std::unordered_map<std::string, std::shared_ptr<Logger>> m_loggers;
76 
78  std::vector<std::pair<std::string, int>> m_thresholds;
79 
81  std::shared_ptr<LogOutput> m_defaultOutput;
82 
85 
86  boost::mutex m_mutex;
87 
88  // Aug 13, 2013
89  // VS2012 does not support "delete" now
92 };
93 
94 }; // Framework
95 }; // SurgSim
96 
97 #endif //SURGSIM_FRAMEWORK_LOGGERMANAGER_H
SurgSim::Framework::LoggerManager::m_mutex
boost::mutex m_mutex
Definition: LoggerManager.h:86
SurgSim::Framework::LoggerManager
Class to safely handle access to a group of loggers, manipulate the global logging threshold,...
Definition: LoggerManager.h:33
SurgSim::Framework::LoggerManager::LoggerManager
LoggerManager()
Constructor.
Definition: LoggerManager.cpp:30
SurgSim::Framework::LoggerManager::getDefaultLogger
std::shared_ptr< Logger > getDefaultLogger()
Gets the default logger.
Definition: LoggerManager.cpp:114
SurgSim::Framework::LoggerManager::getThreshold
int getThreshold() const
Return the threshold used by all loggers.
Definition: LoggerManager.cpp:79
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::Framework::LoggerManager::m_defaultOutput
std::shared_ptr< LogOutput > m_defaultOutput
Use for default output of the logger.
Definition: LoggerManager.h:81
SurgSim::Framework::LoggerManager::getLogger
std::shared_ptr< Logger > getLogger(const std::string &name)
Gets a logger with a given name, creates a new one if none exists or the logger has been deallocated.
Definition: LoggerManager.cpp:85
SurgSim::Framework::LoggerManager::~LoggerManager
~LoggerManager()
Destructor.
Definition: LoggerManager.cpp:38
SurgSim::Framework::LoggerManager::m_globalThreshold
int m_globalThreshold
Threshold used by all loggers.
Definition: LoggerManager.h:84
SurgSim::Framework::LoggerManager::setThreshold
void setThreshold(int threshold)
Sets a threshold for all loggers.
Definition: LoggerManager.cpp:54
SurgSim::Framework::LoggerManager::m_thresholds
std::vector< std::pair< std::string, int > > m_thresholds
Keep track of subgroup thresholds.
Definition: LoggerManager.h:78
SurgSim::Framework::LoggerManager::getDefaultOutput
std::shared_ptr< LogOutput > getDefaultOutput() const
Return the default output.
Definition: LoggerManager.cpp:48
string
string(TOUPPER ${DEVICE} DEVICE_UPPER_CASE) option(BUILD_DEVICE_$
Definition: CMakeLists.txt:38
SurgSim::Framework::LoggerManager::setDefaultOutput
void setDefaultOutput(std::shared_ptr< LogOutput > output)
Sets/Changes default output.
Definition: LoggerManager.cpp:43
SurgSim::Framework::LoggerManager::operator=
LoggerManager & operator=(const LoggerManager &)
SurgSim::Framework::LoggerManager::m_loggers
std::unordered_map< std::string, std::shared_ptr< Logger > > m_loggers
Keep track of all the loggers.
Definition: LoggerManager.h:75