Apache Log4cxx  Version 1.1.0
level.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _LOG4CXX_LEVEL_H
19 #define _LOG4CXX_LEVEL_H
20 
21 
22 #include <log4cxx/logstring.h>
23 #include <limits.h>
24 #include <log4cxx/helpers/object.h>
25 #include <mutex>
26 
27 namespace log4cxx
28 {
37 class Level;
38 typedef std::shared_ptr<Level> LevelPtr;
39 
48 class LOG4CXX_EXPORT Level : public helpers::Object
49 {
50  public:
51  class LOG4CXX_EXPORT LevelClass : public helpers::Class
52  {
53  public:
54  LevelClass() : helpers::Class() {}
55 
56  virtual LogString getName() const
57  {
58  return LOG4CXX_STR("Level");
59  }
60 
61  virtual LevelPtr toLevel(const LogString& sArg) const
62  {
63  return Level::toLevelLS(sArg);
64  }
65 
66  virtual LevelPtr toLevel(int val) const
67  {
68  return Level::toLevel(val);
69  }
70  };
71 
76 
80  Level(int level,
81  const LogString& name,
82  int syslogEquivalent);
83 
89  static LevelPtr toLevel(const std::string& sArg);
98  static LevelPtr toLevel(const std::string& sArg,
99  const LevelPtr& defaultLevel);
104  void toString(std::string& name) const;
105 
106 #if LOG4CXX_WCHAR_T_API
112  static LevelPtr toLevel(const std::wstring& sArg);
121  static LevelPtr toLevel(const std::wstring& sArg,
122  const LevelPtr& defaultLevel);
127  void toString(std::wstring& name) const;
128 #endif
129 #if LOG4CXX_UNICHAR_API
135  static LevelPtr toLevel(const std::basic_string<UniChar>& sArg);
144  static LevelPtr toLevel(const std::basic_string<UniChar>& sArg,
145  const LevelPtr& defaultLevel);
150  void toString(std::basic_string<UniChar>& name) const;
151 #endif
152 #if LOG4CXX_CFSTRING_API
158  static LevelPtr toLevel(const CFStringRef& sArg);
167  static LevelPtr toLevel(const CFStringRef& sArg,
168  const LevelPtr& defaultLevel);
173  void toString(CFStringRef& name) const;
174 #endif
180  static LevelPtr toLevelLS(const LogString& sArg);
189  static LevelPtr toLevelLS(const LogString& sArg,
190  const LevelPtr& defaultLevel);
196 
201  static LevelPtr toLevel(int val);
202 
207  static LevelPtr toLevel(int val, const LevelPtr& defaultLevel);
208 
209  enum
210  {
211  OFF_INT = INT_MAX,
212  FATAL_INT = 50000,
213  ERROR_INT = 40000,
214  WARN_INT = 30000,
215  INFO_INT = 20000,
216  DEBUG_INT = 10000,
217  TRACE_INT = 5000,
218  ALL_INT = INT_MIN
219  };
220 
221 
222  static LevelPtr getAll();
223  static LevelPtr getFatal();
224  static LevelPtr getError();
225  static LevelPtr getWarn();
226  static LevelPtr getInfo();
227  static LevelPtr getDebug();
228  static LevelPtr getTrace();
229  static LevelPtr getOff();
230 
231 
235  virtual bool equals(const LevelPtr& level) const;
236 
237  inline bool operator==(const Level& level1) const
238  {
239  return (this->level == level1.level);
240  }
241 
242  inline bool operator!=(const Level& level1) const
243  {
244  return (this->level != level1.level);
245  }
246 
250  inline int getSyslogEquivalent() const
251  {
252  return syslogEquivalent;
253  }
254 
255 
265  virtual bool isGreaterOrEqual(const LevelPtr& level) const;
266 
267 
271  inline int toInt() const
272  {
273  return level;
274  }
275 
276  private:
277  LOG4CXX_DECLARE_PRIVATE_MEMBER(LogString, name)
278  int level;
279  int syslogEquivalent;
280  Level(const Level&);
281  Level& operator=(const Level&);
282 };
283 
284 }
285 
286 #define DECLARE_LOG4CXX_LEVEL(level)\
287  public:\
288  class Class##level : public Level::LevelClass\
289  {\
290  public:\
291  Class##level() : Level::LevelClass() {}\
292  virtual LogString getName() const { return LOG4CXX_STR(#level); } \
293  virtual LevelPtr toLevel(const LogString& sArg) const\
294  { return level::toLevelLS(sArg); }\
295  virtual LevelPtr toLevel(int val) const\
296  { return level::toLevel(val); }\
297  };\
298  DECLARE_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(level, Class##level)
299 
300 #define IMPLEMENT_LOG4CXX_LEVEL(level) \
301  IMPLEMENT_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(level, Class##level)
302 
303 #endif //_LOG4CXX_LEVEL_H
Definition: level.h:52
virtual LevelPtr toLevel(int val) const
Definition: level.h:66
virtual LevelPtr toLevel(const LogString &sArg) const
Definition: level.h:61
virtual LogString getName() const
Definition: level.h:56
LevelClass()
Definition: level.h:54
Defines the minimum set of levels recognized by the system, that is OFF, FATAL, ERROR,...
Definition: level.h:49
static LevelPtr getError()
static LevelPtr toLevel(const std::wstring &sArg, const LevelPtr &defaultLevel)
Convert the string passed as argument to a level.
static LevelPtr getAll()
static LevelPtr toLevel(const CFStringRef &sArg)
Convert the string passed as argument to a level.
static LevelPtr toLevel(int val)
Convert an integer passed as argument to a level.
static LevelPtr getWarn()
static LevelPtr getOff()
static LevelPtr getDebug()
LogString toString() const
Returns the string representation of this level.
static LevelPtr toLevel(const std::string &sArg)
Convert the string passed as argument to a level.
virtual bool equals(const LevelPtr &level) const
Two levels are equal if their level fields are equal.
bool operator!=(const Level &level1) const
Definition: level.h:242
static LevelPtr getTrace()
static LevelPtr toLevel(int val, const LevelPtr &defaultLevel)
Convert an integer passed as argument to a level.
virtual bool isGreaterOrEqual(const LevelPtr &level) const
Returns true if this level has a higher or equal level than the level passed as argument,...
static LevelPtr toLevel(const std::basic_string< UniChar > &sArg, const LevelPtr &defaultLevel)
Convert the string passed as argument to a level.
void toString(std::wstring &name) const
Get the name of the level.
static LevelPtr toLevelLS(const LogString &sArg)
Convert the string passed as argument to a level.
static LevelPtr getInfo()
void toString(CFStringRef &name) const
Get the name of the level.
int getSyslogEquivalent() const
Return the syslog equivalent of this level as an integer.
Definition: level.h:250
bool operator==(const Level &level1) const
Definition: level.h:237
void toString(std::basic_string< UniChar > &name) const
Get the name of the level.
int toInt() const
Returns the integer representation of this level.
Definition: level.h:271
static LevelPtr toLevel(const std::wstring &sArg)
Convert the string passed as argument to a level.
static LevelPtr getFatal()
static LevelPtr toLevel(const CFStringRef &sArg, const LevelPtr &defaultLevel)
Convert the string passed as argument to a level.
static LevelPtr toLevelLS(const LogString &sArg, const LevelPtr &defaultLevel)
Convert the string passed as argument to a level.
static LevelPtr toLevel(const std::basic_string< UniChar > &sArg)
Convert the string passed as argument to a level.
Definition: class.h:32
base class for java-like objects.
Definition: object.h:105
const struct __CFString * CFStringRef
Definition: logstring.h:30
Definition: appender.h:27
std::basic_string< logchar > LogString
Definition: logstring.h:60
std::shared_ptr< Level > LevelPtr
Definition: optionconverter.h:27
#define DECLARE_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(object, class)
Definition: object.h:59
#define LOG4CXX_CAST_ENTRY(Interface)
Definition: object.h:157
#define END_LOG4CXX_CAST_MAP()
Definition: object.h:151
#define BEGIN_LOG4CXX_CAST_MAP()
Definition: object.h:145