| 1 |
/** |
| 2 |
* logger.h: Logstreams |
| 3 |
* |
| 4 |
* Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team |
| 5 |
* Rights to this code are as documented in COPYING. |
| 6 |
* |
| 7 |
* |
| 8 |
* Portions of this file were derived from sources bearing the following license: |
| 9 |
* Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team |
| 10 |
* Rights to this code are as documented in doc/pod/gplicense.pod. |
| 11 |
* |
| 12 |
* $Id: logger.h,v 1.1 2007-09-09 20:05:51 pippijn Exp $ |
| 13 |
*/ |
| 14 |
|
| 15 |
#ifndef LOGGER_H |
| 16 |
#define LOGGER_H |
| 17 |
|
| 18 |
#include <object.h> |
| 19 |
|
| 20 |
/* logger.c */ |
| 21 |
struct logfile_t : object, zero_initialised |
| 22 |
{ |
| 23 |
unsigned index; |
| 24 |
|
| 25 |
void *log_file; /* opaque: can either be mychan_t or FILE --nenolod */ |
| 26 |
char *log_path; |
| 27 |
unsigned int log_mask; |
| 28 |
|
| 29 |
public: // methods |
| 30 |
static logfile_t *create (char const * const log_path_, unsigned int log_mask); |
| 31 |
virtual void write (char const * const buf); |
| 32 |
void enter (); // XXX: naming? |
| 33 |
void leave (); |
| 34 |
|
| 35 |
private: |
| 36 |
virtual void _destroy (); |
| 37 |
}; |
| 38 |
|
| 39 |
E char *log_path; /* contains path to default log. */ |
| 40 |
E int log_force; |
| 41 |
|
| 42 |
enum loglevel |
| 43 |
{ |
| 44 |
/* general */ |
| 45 |
LG_NONE = 1 << 0, /* don't log */ |
| 46 |
LG_INFO = 1 << 1, /* log general info */ |
| 47 |
LG_ERROR = 1 << 2, /* log real important stuff */ |
| 48 |
LG_IOERROR = 1 << 3, /* log I/O errors. */ |
| 49 |
LG_DEBUG = 1 << 4, /* log debugging stuff */ |
| 50 |
/* commands */ |
| 51 |
LG_CMD_ADMIN = 1 << 5, /* oper-only commands */ |
| 52 |
LG_CMD_REGISTER = 1 << 6, /* register/drop */ |
| 53 |
LG_CMD_SET = 1 << 7, /* change properties of static data */ |
| 54 |
LG_CMD_DO = 1 << 8, /* change properties of dynamic data */ |
| 55 |
LG_CMD_LOGIN = 1 << 9, /* login/logout */ |
| 56 |
LG_CMD_GET = 1 << 10, /* query information */ |
| 57 |
/* other */ |
| 58 |
LG_NETWORK = 1 << 11, /* netsplit/netjoin */ |
| 59 |
LG_WALLOPS = 1 << 12, /* NOTYET wallops from opers/other servers */ |
| 60 |
LG_RAWDATA = 1 << 13, /* all data sent/received */ |
| 61 |
LG_REGISTER = 1 << 14, /* all registration related messages */ |
| 62 |
LG_WARN1 = 1 << 15, /* NOTYET messages formerly walloped */ |
| 63 |
LG_WARN2 = 1 << 16, /* NOTYET messages formerly snooped */ |
| 64 |
|
| 65 |
LG_CMD_ALL = LG_CMD_ADMIN | LG_CMD_REGISTER | LG_CMD_SET | LG_CMD_DO | LG_CMD_LOGIN | LG_CMD_GET, |
| 66 |
LG_ALL = 1 << 31 - 1,/* XXX cannot use bit 31 as it would then be unequal to TOKEN_UNMATCHED */ |
| 67 |
|
| 68 |
/* aliases for use with logcommand() */ |
| 69 |
CMDLOG_ADMIN = LG_CMD_ADMIN, |
| 70 |
CMDLOG_REGISTER = LG_CMD_REGISTER | LG_REGISTER, |
| 71 |
CMDLOG_SET = LG_CMD_SET, |
| 72 |
CMDLOG_DO = LG_CMD_DO, |
| 73 |
CMDLOG_LOGIN = LG_CMD_LOGIN, |
| 74 |
CMDLOG_GET = LG_CMD_GET |
| 75 |
}; |
| 76 |
|
| 77 |
E void log_open (void); |
| 78 |
E void log_shutdown (void); |
| 79 |
E bool log_debug_enabled (void); |
| 80 |
E void log_master_set_mask (unsigned int mask); |
| 81 |
E void slog (unsigned int level, char const * const fmt, ...); |
| 82 |
E void logcommand (sourceinfo_t *si, int level, char const * const fmt, ...); |
| 83 |
E void logcommand_user (service_t *svs, user_t *source, int level, char const * const fmt, ...); |
| 84 |
E void logcommand_external (service_t *svs, char const * const type, connection_t *source, char const * const sourcedesc, myuser_t *login, int level, char const * const fmt, ...); |
| 85 |
|
| 86 |
#endif |