31 # define LOGLINELEN 1024 34 static bool locked_log_open(
LOG_T *);
35 static bool locked_log_close(
LOG_T *);
36 static bool locked_log_write(
LOG_T *,
char *);
39 #define LOG_SPEC_WHICH(x) ((x)->argv[0]) 42 #define LOG_SPEC_PREFIX(x) ((x)->argv[1]) 43 #define LOG_SPEC_PRIORITY(x) ((x)->argv[2]) 46 #define LOG_SPEC_FNAME(x) ((x)->argv[1]) 49 #define LOG_SPEC_UDPDST(x) ((x)->argv[1]) 52 #define LOG_SPEC_OPTION(x) ((x)->argv[2]) 54 #define LOG_MAX_ERRORS 16 151 char *type, *priv, *options;
161 memset(log->
argv, 0, sizeof (log->
argv));
162 memset(&log->
log, 0, sizeof (log->
log));
173 if (spec == NULL || strlen(spec) == 0)
176 if ((log->
spec = strdup(spec)) == NULL)
183 if ((log->
args = strdup(spec)) == NULL)
203 for (i =
ARGVM - 1; i > 0; i--)
205 log->
argv[0] =
"file";
232 log->
open = locked_log_open(log);
243 log->
open = locked_log_open(log);
283 locked_log_close(log);
284 locked_log_open(log);
304 locked_log_close(log);
310 memset(&log->
argv, 0, sizeof (log->
argv));
317 memset(&log->
log, 0, sizeof (log->
log));
341 locked_log_write(log, str);
367 va_start(arg, format);
368 vsnprintf(str,
sizeof (str), format, arg);
371 locked_log_write(log, str);
434 open(
LOG_SPEC_FNAME(log), O_WRONLY | O_CREAT | O_APPEND, 0644)) < 0)
458 addr != NULL ? addr + 1 :
"NULL", port);
463 memset(&log->
log.
udp.sock, 0, sizeof (log->
log.
udp.sock));
464 log->
log.
udp.sock.sin_family = AF_INET;
465 log->
log.
udp.sock.sin_port = htons(port);
469 log->
log.
udp.fd = socket(AF_INET, SOCK_DGRAM, 0);
472 r = connect(log->
log.
udp.fd, (
struct sockaddr *) &log->
log.
udp.sock,
473 sizeof (log->
log.
udp.sock));
508 locked_log_close(log)
531 shutdown(log->
log.
udp.fd, SHUT_RDWR);
551 locked_log_write(log, str)
567 if (prefix != NULL && strlen(prefix) > 0)
577 if (write(log->
log.
file.fd, str, strlen(str)) < 0)
586 if (
strchr(str,
'\n') == NULL)
588 if (write(log->
log.
file.fd,
"\n", 1) < 0)
605 if (!log->
log.
udp.connect)
615 r = connect(log->
log.
udp.fd, (
struct sockaddr *) &log->
log.
udp.sock,
616 sizeof (log->
log.
udp.sock));
628 if (sendto(log->
log.
udp.fd, str, strlen(str), 0, NULL, 0) < 0)
bool log_write(LOG_T *log, char *str)
void zeSyslog(int, char *,...)
int jinet_pton(int, char *, void *)
bool log_ready(LOG_T *log)
int log_error(LOG_T *log)
bool log_lock(LOG_T *log)
bool log_reopen(LOG_T *log)
#define MUTEX_UNLOCK(mutex)
bool log_open(LOG_T *log, char *spec)
#define LOG_SPEC_FNAME(x)
bool log_init(LOG_T *log)
#define MUTEX_LOCK(mutex)
bool zeStrRegex(char *, char *, long *, long *, bool)
int zeStr2Tokens(char *, int, char **, char *)
struct LOG_T::@1::@2 syslog
bool log_unlock(LOG_T *log)
long zeStr2long(char *s, int *error, long dval)
#define ZE_MessageNotice(level,...)
bool log_printf(LOG_T *log, char *format,...)
#define ZE_MessageInfo(level,...)
struct LOG_T::@1::@3 file
#define LOG_SPEC_PRIORITY(x)
#define ZE_MessageWarning(level,...)
#define LOG_SPEC_PREFIX(x)
#define ZE_LogSysError(...)
#define ZE_LogMsgWarning(level,...)
bool log_debug(LOG_T *log, bool debug)
int zeLog_PriorityValue(char *)
#define LOG_SPEC_UDPDST(x)
bool log_close(LOG_T *log)
#define LOG_SPEC_WHICH(x)