PcapPlusPlus  20.08
Logger.h
Go to the documentation of this file.
1 #ifndef PCAPPP_LOGGER
2 #define PCAPPP_LOGGER
3 
4 #include <stdio.h>
5 #include <stdint.h>
6 
7 #ifndef LOG_MODULE
8 #define LOG_MODULE UndefinedLogModule
9 #endif
10 
12 
17 namespace pcpp
18 {
19 
23  enum LogModule
24  {
25  UndefinedLogModule,
66  NumOfLogModules
67  };
68 
83  class LoggerPP
84  {
85  public:
89  enum LogLevel
90  {
93  };
94 
100  void setLogLevel(LogModule module, LogLevel level) { m_LogModulesArray[module] = level; }
101 
106  void setAllModlesToLogLevel(LogLevel level) { for (int i=1; i<NumOfLogModules; i++) m_LogModulesArray[i] = level; }
107 
113  bool isDebugEnabled(LogModule module) const { return m_LogModulesArray[module] == Debug; }
114 
122  const LogLevel* getLogModulesArr() const { return m_LogModulesArray; }
123 
128  bool isErrorStringSet() const { return m_ErrorString != NULL; }
129 
134  char* getErrorString() const { return m_ErrorString; }
135 
142  void setErrorString(char* errString, int len) { m_ErrorString = errString; m_ErrorStringLen = len; }
143 
148  int getErrorStringLength() const { return m_ErrorStringLen; }
149 
153  void supressErrors() { m_SuppressErrors = true; }
154 
158  void enableErrors() { m_SuppressErrors = false; }
159 
164  bool isSupressErrors() const { return m_SuppressErrors; }
165 
172  {
173  static LoggerPP instance;
174  return instance;
175  }
176  private:
177  char* m_ErrorString;
178  int m_ErrorStringLen;
179  bool m_SuppressErrors;
180  LoggerPP::LogLevel m_LogModulesArray[NumOfLogModules];
181  LoggerPP();
182  };
183 
184 #define LOG_DEBUG(format, ...) do { \
185  if(pcpp::LoggerPP::getInstance().isDebugEnabled(LOG_MODULE)) { \
186  printf("[%-35s: %-25s: line:%-4d] " format "\n", __FILE__, __FUNCTION__, __LINE__, ## __VA_ARGS__); \
187  } \
188  } while(0)
189 
190 #define LOG_ERROR(format, ...) do { \
191  if (!pcpp::LoggerPP::getInstance().isSupressErrors()) {\
192  if(pcpp::LoggerPP::getInstance().isErrorStringSet()) \
193  snprintf(pcpp::LoggerPP::getInstance().getErrorString(), pcpp::LoggerPP::getInstance().getErrorStringLength(), format, ## __VA_ARGS__); \
194  else \
195  fprintf(stderr, format "\n", ## __VA_ARGS__); \
196  } \
197  } while (0)
198 
199 #define IS_DEBUG pcpp::LoggerPP::getInstance().isDebugEnabled(LOG_MODULE)
200 
201 } // namespace pcpp
202 
203 #endif /* PCAPPP_LOGGER */
The main namespace for the PcapPlusPlus lib.
IcmpLayer module (Packet++)
Definition: Logger.h:44
PfRingDevice module (Pcap++)
Definition: Logger.h:61
static LoggerPP & getInstance()
Definition: Logger.h:171
LogModule
Definition: Logger.h:23
SdpLayer module (Packet++)
Definition: Logger.h:51
SllLayer module (Packet++)
Definition: Logger.h:47
Packet module (Packet++)
Definition: Logger.h:30
RadiusLayer module (Packet++)
Definition: Logger.h:52
MBufRawPacket module (Pcap++)
Definition: Logger.h:62
bool isSupressErrors() const
Definition: Logger.h:164
const LogLevel * getLogModulesArr() const
Definition: Logger.h:122
PayloadLayer module (Packet++)
Definition: Logger.h:36
void enableErrors()
Definition: Logger.h:158
VlanLayer module (Packet++)
Definition: Logger.h:39
IP Utils module (Common++)
Definition: Logger.h:26
void setLogLevel(LogModule module, LogLevel level)
Definition: Logger.h:100
IPReassembly module (Packet++)
Definition: Logger.h:56
LogLevel
Definition: Logger.h:89
HttpLayer module (Packet++)
Definition: Logger.h:40
bool isErrorStringSet() const
Definition: Logger.h:128
SipLayer module (Packet++)
Definition: Logger.h:50
void setErrorString(char *errString, int len)
Definition: Logger.h:142
IgmpLayer module (Packet++)
Definition: Logger.h:49
Debug log level.
Definition: Logger.h:92
DnsLayer module (Packet++)
Definition: Logger.h:42
RawPacket module (Packet++)
Definition: Logger.h:29
PcapLiveDevice module (Pcap++)
Definition: Logger.h:59
GtpLayer module (Packet++)
Definition: Logger.h:53
DpdkDevice module (Pcap++)
Definition: Logger.h:63
Normal log level.
Definition: Logger.h:91
MplsLayer module (Packet++)
Definition: Logger.h:43
IPv4Layer module (Packet++)
Definition: Logger.h:34
FileDevice module (Pcap++)
Definition: Logger.h:60
Generic Utils (Common++)
Definition: Logger.h:28
bool isDebugEnabled(LogModule module) const
Definition: Logger.h:113
NetworkUtils module (Pcap++)
Definition: Logger.h:65
SSLLayer module (Packet++)
Definition: Logger.h:46
TcpLayer module (Packet++)
Definition: Logger.h:37
KniDevice module (Pcap++)
Definition: Logger.h:64
void supressErrors()
Definition: Logger.h:153
GreLayer module (Packet++)
Definition: Logger.h:45
WinPcapLiveDevice module (Pcap++)
Definition: Logger.h:57
WinPcapRemoteDevice module (Pcap++)
Definition: Logger.h:58
void setAllModlesToLogLevel(LogLevel level)
Definition: Logger.h:106
TcpReassembly module (Packet++)
Definition: Logger.h:55
Layer module (Packet++)
Definition: Logger.h:31
ArpLayer module (Packet++)
Definition: Logger.h:32
int getErrorStringLength() const
Definition: Logger.h:148
EthLayer module (Packet++)
Definition: Logger.h:33
UdpLayer module (Packet++)
Definition: Logger.h:38
GtpLayer module (Packet++)
Definition: Logger.h:54
PPPoELayer module (Packet++)
Definition: Logger.h:41
Definition: Logger.h:83
DhcpLayer module (Packet++)
Definition: Logger.h:48
IPv6Layer module (Packet++)
Definition: Logger.h:35
char * getErrorString() const
Definition: Logger.h:134
Table printer module (Common++)
Definition: Logger.h:27