mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Initial import of svn+ssh:://svn.icir.org/bro/trunk/bro as of r7088
This commit is contained in:
commit
61757ac78b
1383 changed files with 380824 additions and 0 deletions
88
src/DebugLogger.h
Normal file
88
src/DebugLogger.h
Normal file
|
@ -0,0 +1,88 @@
|
|||
// $Id: DebugLogger.h 4771 2007-08-11 05:50:24Z vern $
|
||||
//
|
||||
// A logger for (selective) debugging output. Only compiled in if DEBUG is
|
||||
// defined.
|
||||
|
||||
#ifndef debug_logger_h
|
||||
#define debug_logger_h
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// To add a new debugging stream, add a constant here as well as
|
||||
// an entry to DebugLogger::streams in DebugLogger.cc.
|
||||
|
||||
enum DebugStream {
|
||||
DBG_SERIAL, // Serialization
|
||||
DBG_RULES, // Signature matching
|
||||
DBG_COMM, // Remote communication
|
||||
DBG_STATE, // StateAccess logging
|
||||
DBG_CHUNKEDIO, // ChunkedIO logging
|
||||
DBG_COMPRESSOR, // Connection compressor
|
||||
DBG_STRING, // String code
|
||||
DBG_NOTIFIERS, // Notifiers (see StateAccess.h)
|
||||
DBG_MAINLOOP, // Main IOSource loop
|
||||
DBG_DPD, // Dynamic application detection framework
|
||||
DBG_TM, // Time-machine packet input via Brocolli
|
||||
|
||||
NUM_DBGS // Has to be last
|
||||
};
|
||||
|
||||
#define DBG_LOG(args...) debug_logger.Log(args)
|
||||
#define DBG_LOG_VERBOSE(args...) \
|
||||
if ( debug_logger.IsVerbose() ) \
|
||||
debug_logger.Log(args)
|
||||
#define DBG_PUSH(stream) debug_logger.PushIndent(stream)
|
||||
#define DBG_POP(stream) debug_logger.PopIndent(stream)
|
||||
|
||||
class DebugLogger {
|
||||
public:
|
||||
// Output goes to stderr per default.
|
||||
DebugLogger(const char* filename = 0);
|
||||
~DebugLogger();
|
||||
|
||||
void Log(DebugStream stream, const char* fmt, ...);
|
||||
|
||||
void PushIndent(DebugStream stream)
|
||||
{ ++streams[int(stream)].indent; }
|
||||
void PopIndent(DebugStream stream)
|
||||
{ --streams[int(stream)].indent; }
|
||||
|
||||
void EnableStream(DebugStream stream)
|
||||
{ streams[int(stream)].enabled = true; }
|
||||
void DisableStream(DebugStream stream)
|
||||
{ streams[int(stream)].enabled = false; }
|
||||
|
||||
// Takes comma-seperated list of stream prefixes.
|
||||
void EnableStreams(const char* streams);
|
||||
|
||||
bool IsEnabled(DebugStream stream) const
|
||||
{ return streams[int(stream)].enabled; }
|
||||
|
||||
void SetVerbose(bool arg_verbose) { verbose = arg_verbose; }
|
||||
bool IsVerbose() const { return verbose; }
|
||||
|
||||
private:
|
||||
FILE* file;
|
||||
bool verbose;
|
||||
|
||||
struct Stream {
|
||||
const char* prefix;
|
||||
int indent;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
static Stream streams[NUM_DBGS];
|
||||
};
|
||||
|
||||
extern DebugLogger debug_logger;
|
||||
|
||||
#else
|
||||
#define DBG_LOG(args...)
|
||||
#define DBG_LOG_VERBOSE(args...)
|
||||
#define DBG_PUSH(stream)
|
||||
#define DBG_POP(stream)
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue