odyssey/sources/logger.h

128 lines
2.3 KiB
C
Raw Normal View History

#ifndef ODYSSEY_LOGGER_H
#define ODYSSEY_LOGGER_H
2017-07-26 14:05:29 +00:00
/*
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,
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
{
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 *);
2017-07-26 14:05:29 +00:00
static inline void
od_logger_set_debug(od_logger_t *logger, int enable)
2017-07-26 14:05:29 +00:00
{
logger->log_debug = enable;
2017-07-26 14:05:29 +00:00
}
static inline void
od_logger_set_stdout(od_logger_t *logger, int enable)
2017-07-26 14:05:29 +00:00
{
logger->log_stdout = enable;
2017-07-26 14:05:29 +00:00
}
static inline void
od_logger_set_format(od_logger_t *logger, char *format)
2017-07-26 14:05:29 +00:00
{
logger->format = format;
logger->format_len = strlen(format);
2017-07-26 14:05:29 +00:00
}
int
od_logger_open(od_logger_t *, char *);
int
2020-10-17 16:01:57 +00:00
od_logger_reopen(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
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);
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
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);
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
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);
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
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);
od_logger_write(logger, OD_FATAL, context, client, server, fmt, args);
2017-07-26 14:05:29 +00:00
va_end(args);
exit(1);
2017-07-26 14:05:29 +00:00
}
#endif /* ODYSSEY_LOGGER_H */