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 */
pcpp::PacketLogModuleDhcpLayer
@ PacketLogModuleDhcpLayer
DhcpLayer module (Packet++)
Definition: Logger.h:48
pcpp::PcapLogModulePfRingDevice
@ PcapLogModulePfRingDevice
PfRingDevice module (Pcap++)
Definition: Logger.h:61
pcpp::PacketLogModuleIPv6Layer
@ PacketLogModuleIPv6Layer
IPv6Layer module (Packet++)
Definition: Logger.h:35
pcpp::PacketLogModuleSdpLayer
@ PacketLogModuleSdpLayer
SdpLayer module (Packet++)
Definition: Logger.h:51
pcpp::PacketLogModuleSllLayer
@ PacketLogModuleSllLayer
SllLayer module (Packet++)
Definition: Logger.h:47
pcpp::PacketLogModulePacket
@ PacketLogModulePacket
Packet module (Packet++)
Definition: Logger.h:30
pcpp::PacketLogModuleRadiusLayer
@ PacketLogModuleRadiusLayer
RadiusLayer module (Packet++)
Definition: Logger.h:52
pcpp::LoggerPP::enableErrors
void enableErrors()
Definition: Logger.h:158
pcpp::PacketLogModulePayloadLayer
@ PacketLogModulePayloadLayer
PayloadLayer module (Packet++)
Definition: Logger.h:36
pcpp::LoggerPP::setErrorString
void setErrorString(char *errString, int len)
Definition: Logger.h:142
pcpp::PacketLogModuleVlanLayer
@ PacketLogModuleVlanLayer
VlanLayer module (Packet++)
Definition: Logger.h:39
pcpp::LogModule
LogModule
Definition: Logger.h:23
pcpp::LoggerPP::isDebugEnabled
bool isDebugEnabled(LogModule module) const
Definition: Logger.h:113
pcpp::PcapLogModuleMBufRawPacket
@ PcapLogModuleMBufRawPacket
MBufRawPacket module (Pcap++)
Definition: Logger.h:62
pcpp::LoggerPP::Debug
@ Debug
Debug log level.
Definition: Logger.h:92
pcpp::LoggerPP::getInstance
static LoggerPP & getInstance()
Definition: Logger.h:171
pcpp::CommonLogModuleIpUtils
@ CommonLogModuleIpUtils
IP Utils module (Common++)
Definition: Logger.h:26
pcpp::LoggerPP::getErrorString
char * getErrorString() const
Definition: Logger.h:134
pcpp::PacketLogModuleIPReassembly
@ PacketLogModuleIPReassembly
IPReassembly module (Packet++)
Definition: Logger.h:56
pcpp::LoggerPP::setAllModlesToLogLevel
void setAllModlesToLogLevel(LogLevel level)
Definition: Logger.h:106
pcpp::LoggerPP::Normal
@ Normal
Normal log level.
Definition: Logger.h:91
pcpp::PacketLogModuleIgmpLayer
@ PacketLogModuleIgmpLayer
IgmpLayer module (Packet++)
Definition: Logger.h:49
pcpp::PacketLogModuleHttpLayer
@ PacketLogModuleHttpLayer
HttpLayer module (Packet++)
Definition: Logger.h:40
pcpp::LoggerPP
Definition: Logger.h:83
pcpp::LoggerPP::isErrorStringSet
bool isErrorStringSet() const
Definition: Logger.h:128
pcpp::PacketLogModuleSipLayer
@ PacketLogModuleSipLayer
SipLayer module (Packet++)
Definition: Logger.h:50
pcpp::PcapLogModuleLiveDevice
@ PcapLogModuleLiveDevice
PcapLiveDevice module (Pcap++)
Definition: Logger.h:59
pcpp::PacketLogModuleGtpLayer
@ PacketLogModuleGtpLayer
GtpLayer module (Packet++)
Definition: Logger.h:53
pcpp::PacketLogModuleDnsLayer
@ PacketLogModuleDnsLayer
DnsLayer module (Packet++)
Definition: Logger.h:42
pcpp::PacketLogModuleRawPacket
@ PacketLogModuleRawPacket
RawPacket module (Packet++)
Definition: Logger.h:29
pcpp::PacketLogModuleMplsLayer
@ PacketLogModuleMplsLayer
MplsLayer module (Packet++)
Definition: Logger.h:43
pcpp::PacketLogModuleIPv4Layer
@ PacketLogModuleIPv4Layer
IPv4Layer module (Packet++)
Definition: Logger.h:34
pcpp::PcapLogModuleFileDevice
@ PcapLogModuleFileDevice
FileDevice module (Pcap++)
Definition: Logger.h:60
pcpp::PcapLogModuleDpdkDevice
@ PcapLogModuleDpdkDevice
DpdkDevice module (Pcap++)
Definition: Logger.h:63
pcpp::CommonLogModuleGenericUtils
@ CommonLogModuleGenericUtils
Generic Utils (Common++)
Definition: Logger.h:28
pcpp
The main namespace for the PcapPlusPlus lib.
pcpp::NetworkUtils
@ NetworkUtils
NetworkUtils module (Pcap++)
Definition: Logger.h:65
pcpp::LoggerPP::getErrorStringLength
int getErrorStringLength() const
Definition: Logger.h:148
pcpp::PacketLogModuleSSLLayer
@ PacketLogModuleSSLLayer
SSLLayer module (Packet++)
Definition: Logger.h:46
pcpp::LoggerPP::getLogModulesArr
const LogLevel * getLogModulesArr() const
Definition: Logger.h:122
pcpp::PcapLogModuleKniDevice
@ PcapLogModuleKniDevice
KniDevice module (Pcap++)
Definition: Logger.h:64
pcpp::PacketLogModuleGreLayer
@ PacketLogModuleGreLayer
GreLayer module (Packet++)
Definition: Logger.h:45
pcpp::PcapLogModuleRemoteDevice
@ PcapLogModuleRemoteDevice
WinPcapRemoteDevice module (Pcap++)
Definition: Logger.h:58
pcpp::LoggerPP::LogLevel
LogLevel
Definition: Logger.h:89
pcpp::PacketLogModuleTcpLayer
@ PacketLogModuleTcpLayer
TcpLayer module (Packet++)
Definition: Logger.h:37
pcpp::LoggerPP::setLogLevel
void setLogLevel(LogModule module, LogLevel level)
Definition: Logger.h:100
pcpp::PcapLogModuleWinPcapLiveDevice
@ PcapLogModuleWinPcapLiveDevice
WinPcapLiveDevice module (Pcap++)
Definition: Logger.h:57
pcpp::PacketLogModuleUdpLayer
@ PacketLogModuleUdpLayer
UdpLayer module (Packet++)
Definition: Logger.h:38
pcpp::PacketLogModuleBgpLayer
@ PacketLogModuleBgpLayer
GtpLayer module (Packet++)
Definition: Logger.h:54
pcpp::PacketLogModuleTcpReassembly
@ PacketLogModuleTcpReassembly
TcpReassembly module (Packet++)
Definition: Logger.h:55
pcpp::PacketLogModuleLayer
@ PacketLogModuleLayer
Layer module (Packet++)
Definition: Logger.h:31
pcpp::PacketLogModulePPPoELayer
@ PacketLogModulePPPoELayer
PPPoELayer module (Packet++)
Definition: Logger.h:41
pcpp::LoggerPP::supressErrors
void supressErrors()
Definition: Logger.h:153
pcpp::PacketLogModuleArpLayer
@ PacketLogModuleArpLayer
ArpLayer module (Packet++)
Definition: Logger.h:32
pcpp::PacketLogModuleEthLayer
@ PacketLogModuleEthLayer
EthLayer module (Packet++)
Definition: Logger.h:33
pcpp::LoggerPP::isSupressErrors
bool isSupressErrors() const
Definition: Logger.h:164
pcpp::CommonLogModuleTablePrinter
@ CommonLogModuleTablePrinter
Table printer module (Common++)
Definition: Logger.h:27
pcpp::PacketLogModuleIcmpLayer
@ PacketLogModuleIcmpLayer
IcmpLayer module (Packet++)
Definition: Logger.h:44