2017-07-26 14:05:29 +00:00
|
|
|
#ifndef OD_LOGGER_H
|
|
|
|
#define OD_LOGGER_H
|
|
|
|
|
|
|
|
/*
|
2018-03-12 14:03:15 +00:00
|
|
|
* Odyssey.
|
2017-07-26 14:05:29 +00:00
|
|
|
*
|
2018-04-04 13:19:58 +00:00
|
|
|
* Scalable PostgreSQL connection pooler.
|
2017-07-26 14:05:29 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct od_logger od_logger_t;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
OD_LOG,
|
2017-09-21 13:44:19 +00:00
|
|
|
OD_ERROR,
|
|
|
|
OD_DEBUG,
|
|
|
|
OD_FATAL
|
|
|
|
} od_logger_level_t;
|
2017-07-27 12:24:38 +00:00
|
|
|
|
2017-07-26 14:05:29 +00:00
|
|
|
struct od_logger
|
|
|
|
{
|
2017-09-21 13:44:19 +00:00
|
|
|
od_pid_t *pid;
|
|
|
|
int log_debug;
|
|
|
|
int log_stdout;
|
|
|
|
int log_syslog;
|
|
|
|
char *format;
|
|
|
|
int format_len;
|
|
|
|
int fd;
|
2017-07-26 14:05:29 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
void od_logger_init(od_logger_t*, od_pid_t*);
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_set_debug(od_logger_t *logger, int enable)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
2017-09-21 13:44:19 +00:00
|
|
|
logger->log_debug = enable;
|
2017-07-26 14:05:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_set_stdout(od_logger_t *logger, int enable)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
2017-09-21 13:44:19 +00:00
|
|
|
logger->log_stdout = enable;
|
2017-07-26 14:05:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_set_format(od_logger_t *logger, char *format)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
2017-09-21 13:44:19 +00:00
|
|
|
logger->format = format;
|
|
|
|
logger->format_len = strlen(format);
|
2017-07-26 14:05:29 +00:00
|
|
|
}
|
|
|
|
|
2017-09-21 13:44:19 +00:00
|
|
|
int od_logger_open(od_logger_t*, char*);
|
|
|
|
int od_logger_open_syslog(od_logger_t*, char*, char*);
|
|
|
|
void od_logger_close(od_logger_t*);
|
|
|
|
void od_logger_write(od_logger_t*, od_logger_level_t,
|
|
|
|
char*,
|
|
|
|
void*, void*,
|
|
|
|
char*, va_list);
|
2017-07-26 14:05:29 +00:00
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_log(od_logger_t *logger, char *context,
|
|
|
|
void *client, void *server,
|
|
|
|
char *fmt, ...)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_write(logger, OD_LOG, context, client, server, fmt, args);
|
2017-07-26 14:05:29 +00:00
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_debug(od_logger_t *logger, char *context,
|
|
|
|
void *client, void *server,
|
|
|
|
char *fmt, ...)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_write(logger, OD_DEBUG, context, client, server, fmt, args);
|
2017-07-26 14:05:29 +00:00
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_error(od_logger_t *logger, char *context,
|
|
|
|
void *client, void *server,
|
|
|
|
char *fmt, ...)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_write(logger, OD_ERROR, context, client, server, fmt, args);
|
2017-07-26 14:05:29 +00:00
|
|
|
va_end(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2017-09-21 13:44:19 +00:00
|
|
|
od_fatal(od_logger_t *logger, char *context,
|
|
|
|
void *client, void *server,
|
|
|
|
char *fmt, ...)
|
2017-07-26 14:05:29 +00:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_logger_write(logger, OD_FATAL, context, client, server, fmt, args);
|
2017-07-26 14:05:29 +00:00
|
|
|
va_end(args);
|
2017-09-21 13:44:19 +00:00
|
|
|
exit(1);
|
2017-07-26 14:05:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|