OpenZWave Library  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Log.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // Log.h
4 //
5 // Cross-platform message and error logging
6 //
7 // Copyright (c) 2010 Mal Lansell <mal@lansell.org>
8 // All rights reserved.
9 //
10 // SOFTWARE NOTICE AND LICENSE
11 //
12 // This file is part of OpenZWave.
13 //
14 // OpenZWave is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU Lesser General Public License as published
16 // by the Free Software Foundation, either version 3 of the License,
17 // or (at your option) any later version.
18 //
19 // OpenZWave is distributed in the hope that it will be useful,
20 // but WITHOUT ANY WARRANTY; without even the implied warranty of
21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 // GNU Lesser General Public License for more details.
23 //
24 // You should have received a copy of the GNU Lesser General Public License
25 // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
26 //
27 //-----------------------------------------------------------------------------
28 #ifndef _Log_H
29 #define _Log_H
30 
31 #include <stdarg.h>
32 #include <string>
33 #include "Defs.h"
34 
35 
36 
37 namespace OpenZWave
38 {
39  class Mutex;
40  extern char const *LogLevelString[];
41  enum LogLevel
42  {
56  };
57 
58  class i_LogImpl
59  {
60  public:
61  i_LogImpl() { } ;
62  virtual ~i_LogImpl() { } ;
63  virtual void Write( LogLevel _level, uint8 const _nodeId, char const* _format, va_list _args ) = 0;
64  virtual void QueueDump() = 0;
65  virtual void QueueClear() = 0;
66  virtual void SetLoggingState( LogLevel _saveLevel, LogLevel _queueLevel, LogLevel _dumpTrigger ) = 0;
67  virtual void SetLogFileName( const string &_filename ) = 0;
68  };
69 
72  class Log
73  {
74  public:
82  static Log* Create( string const& _filename, bool const _bAppend, bool const _bConsoleOutput, LogLevel const _saveLevel, LogLevel const _queueLevel, LogLevel const _dumpTrigger );
83 
93  static Log* Create( i_LogImpl *LogClass );
94 
101  static void Destroy();
102 
108  static bool SetLoggingClass(i_LogImpl *LogClass );
109 
114  static void SetLoggingState(bool _dologging);
115 
123  static void SetLoggingState( LogLevel _saveLevel, LogLevel _queueLevel, LogLevel _dumpTrigger );
124 
129  static bool GetLoggingState();
130 
137  static void GetLoggingState( LogLevel* _saveLevel, LogLevel* _queueLevel, LogLevel* _dumpTrigger );
138 
145  static void SetLogFileName( const string &_filename );
146 
155  static void Write( LogLevel _level, char const* _format, ... );
156 
166  static void Write( LogLevel _level, uint8 const _nodeId, char const* _format, ... );
167 
171  static void QueueDump();
172 
176  static void QueueClear();
177 
178  private:
179  Log( string const& _filename, bool const _bAppend, bool const _bConsoleOutput, LogLevel _saveLevel, LogLevel _queueLevel, LogLevel _dumpTrigger );
180  ~Log();
181 
182  static i_LogImpl* m_pImpl;
183  static Log* s_instance;
184  Mutex* m_logMutex;
185  };
186 } // namespace OpenZWave
187 
188 #endif //_Log_H
LogLevel
Definition: Log.h:41
static bool GetLoggingState()
Determine whether logging is enabled or not (retained for backward compatibility) ...
Definition: Log.cpp:209
virtual void SetLoggingState(LogLevel _saveLevel, LogLevel _queueLevel, LogLevel _dumpTrigger)=0
i_LogImpl()
Definition: Log.h:61
virtual void QueueClear()=0
Definition: Log.h:55
static Log * Create(string const &_filename, bool const _bAppend, bool const _bConsoleOutput, LogLevel const _saveLevel, LogLevel const _queueLevel, LogLevel const _dumpTrigger)
Definition: Log.cpp:73
virtual void QueueDump()=0
static void SetLogFileName(const string &_filename)
Change the log file name. This will start a new log file (or potentially start appending information ...
Definition: Log.cpp:299
Definition: Log.h:43
Definition: Log.h:47
static void QueueClear()
Definition: Log.cpp:283
Definition: Log.h:45
virtual void Write(LogLevel _level, uint8 const _nodeId, char const *_format, va_list _args)=0
Definition: Log.h:46
static void Destroy()
Definition: Log.cpp:121
virtual ~i_LogImpl()
Definition: Log.h:62
Definition: Log.h:48
Definition: Log.h:49
virtual void SetLogFileName(const string &_filename)=0
Definition: Log.h:52
static void QueueDump()
Definition: Log.cpp:267
Implements a platform-independent mutex–for serializing access to a shared resource.
Definition: Mutex.h:39
Definition: Log.h:50
Definition: Log.h:58
Definition: Log.h:51
Implements a platform-independent log...written to the console and, optionally, a file...
Definition: Log.h:72
static void Write(LogLevel _level, char const *_format,...)
Definition: Log.cpp:220
char const * LogLevelString[]
Definition: Log.cpp:45
static bool SetLoggingClass(i_LogImpl *LogClass)
Set the Logging Implmentation Class to replace the standard File/Console Loggin.
Definition: Log.cpp:133
static void SetLoggingState(bool _dologging)
Enable or disable library logging (retained for backward compatibility)
Definition: Log.cpp:153
Definition: Log.h:44
unsigned char uint8
Definition: Defs.h:74