Files
nginx-unit/src/nxt_log.c
Valentin Bartenev b04832da84 Disabled logging alerts to syslog.
It feels to be causing more harm than good, because syslog() can be blocking,
which is even more critical under resource exhaustion conditions when some
alerts are expected.
2021-03-24 08:05:07 +03:00

120 lines
2.1 KiB
C

/*
* Copyright (C) Igor Sysoev
* Copyright (C) NGINX, Inc.
*/
#include <nxt_main.h>
nxt_uint_t nxt_debug;
nxt_uint_t nxt_trace;
nxt_log_t nxt_main_log = {
NXT_LOG_INFO,
0,
nxt_log_handler,
NULL,
NULL
};
nxt_str_t nxt_log_levels[6] = {
nxt_string("alert"),
nxt_string("error"),
nxt_string("warn"),
nxt_string("notice"),
nxt_string("info"),
nxt_string("debug")
};
static const u_char *nxt_log_prefix;
void
nxt_log_start(const char *prefix)
{
if (prefix != NULL && *prefix != '\0') {
nxt_log_prefix = (u_char *) prefix;
}
}
/* STUB */
nxt_log_t *
nxt_log_set_ctx(nxt_log_t *log, nxt_log_ctx_handler_t handler, void *ctx)
{
nxt_log_t *old;
nxt_thread_t *thr;
thr = nxt_thread();
old = thr->log;
log->level = old->level;
log->handler = old->handler;
log->ctx_handler = handler;
log->ctx = ctx;
thr->log = log;
return old;
}
void nxt_cdecl
nxt_log_handler(nxt_uint_t level, nxt_log_t *log, const char *fmt, ...)
{
u_char *p, *end;
#if 0
u_char *syslogmsg;
#endif
va_list args;
u_char msg[NXT_MAX_ERROR_STR];
p = msg;
end = msg + NXT_MAX_ERROR_STR;
if (nxt_log_prefix != NULL) {
p = nxt_cpystrn(p, nxt_log_prefix, end - p);
*p++ = ':';
*p++ = ' ';
}
#if 0
syslogmsg = p;
#endif
p = nxt_sprintf(p, end, (log->ident != 0) ? "[%V] *%D " : "[%V] ",
&nxt_log_levels[level], log->ident);
va_start(args, fmt);
p = nxt_vsprintf(p, end, fmt, args);
va_end(args);
if (level != NXT_LOG_DEBUG && log->ctx_handler != NULL) {
p = log->ctx_handler(log->ctx, p, end);
}
if (p > end - nxt_length("\n")) {
p = end - nxt_length("\n");
}
*p++ = '\n';
(void) nxt_write_console(nxt_stderr, msg, p - msg);
#if 0
if (level == NXT_LOG_ALERT) {
*(p - nxt_length("\n")) = '\0';
/*
* Syslog LOG_ALERT level is enough, because
* LOG_EMERG level broadcast a message to all users.
*/
nxt_write_syslog(LOG_ALERT, syslogmsg);
}
#endif
}