#ifndef __BGLOG_H__
#define __BGLOG_H__
/* $Id: bglog.h,v 1.1 2000/02/18 09:04:17 dpfeifle Exp $ */
#include <stdio.h>
#include <stdarg.h>
static const int MAX_TRACE_LENGTH = 1024;
// Commonly used log configurations
static const long LT_ALL = 0xffffffff;
static const long LT_NONE = 0x00000000;
static const long LT_DEFAULT = 0xffffffff;
// Log Threshold
static const long LT_CRITICAL = 0x01000000;
static const long LT_ERROR = 0x02000000;
static const long LT_ASSERTION = 0x04000000;
static const long LT_WARNING = 0x08000000;
static const long LT_INFORMAL = 0x0f000000;
static const long LT_TRACE = 0x10000000;
static const long LT_DEBUG = 0xff000000;
// Log Type
static const long LT_GENERAL = 0x00000001;
static const long LT_MEMORY = 0x00000002;
static const long LT_NETWORK = 0x00000003;
static const long LT_APPLICATION = 0x00000f01;
class BGLogEvent
{
public:
BGLogEvent ( );
BGLogEvent ( const char *msg, long lt = LT_TRACE | LT_GENERAL );
~BGLogEvent ( );
void
setType ( long lt ) { logtype=lt; }
long
type ( ) const { return logtype; }
const char*
msg ( ) const { return message; }
private:
long
logtype;
char
*message;
};
//class BGString;
class BGLogger
{
public:
BGLogger ( long lt = LT_DEFAULT, FILE *fp=stderr );
~BGLogger ( );
void
write ( BGLogEvent &entry );
void
setTrace ( long lt ) { log_type = lt; }
bool
doTrace ( long lt ) { return (log_type & lt >0) ? 1 : 0; }
void
setOutput ( FILE *fp ) { file_ptr = fp; }
void
_devnull ( const char *format, ... );
void
_atrace ( const char *format, ... );
void
_mtrace ( const char *format, ... );
void
_debug ( const char *format, ... );
private:
FILE
*file_ptr;
long
log_type;
};
static BGLogger logger;
// We define some useful abbreviations here...
#ifndef SILENT_MODE
#define atrace logger._atrace
#define mtrace logger._mtrace
#else
#define atrace logger._devnull
#define mtrace logger._devnull
#endif
#ifdef DEBUG
#define debug logger._debug
#else
#define debug logger._devnull
#endif
#endif