opensurgsim
LoggerManager.h
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 
84  int m_globalThreshold;
85 
86  boost::mutex m_mutex;
87 
88  // Aug 13, 2013
89  // VS2012 does not support "delete" now
91  LoggerManager& operator=(const LoggerManager&);
92 };
93 
94 }; // Framework
95 }; // SurgSim
96 
97 #endif //SURGSIM_FRAMEWORK_LOGGERMANAGER_H
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
int getThreshold() const
Return the threshold used by all loggers.
Definition: LoggerManager.cpp:79
~LoggerManager()
Destructor.
Definition: LoggerManager.cpp:38
void setThreshold(int threshold)
Sets a threshold for all loggers.
Definition: LoggerManager.cpp:54
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
std::shared_ptr< LogOutput > getDefaultOutput() const
Return the default output.
Definition: LoggerManager.cpp:48
void setDefaultOutput(std::shared_ptr< LogOutput > output)
Sets/Changes default output.
Definition: LoggerManager.cpp:43
LoggerManager()
Constructor.
Definition: LoggerManager.cpp:30
std::shared_ptr< Logger > getDefaultLogger()
Gets the default logger.
Definition: LoggerManager.cpp:114
Class to safely handle access to a group of loggers, manipulate the global logging threshold...
Definition: LoggerManager.h:33