#include
<sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>
void
kutil_err
(const struct kreq *r,
const char *ident, const char
*fmt, ...);
void
kutil_errx
(const struct kreq *r,
const char *ident, const char
*fmt, ...);
void
kutil_info
(const struct kreq *r,
const char *ident, const char
*fmt, ...);
void
kutil_log
(const struct kreq *r,
const char *level, const char
*ident, const char *fmt,
...);
void
kutil_logx
(const struct kreq *r,
const char *level, const char
*ident, const char *fmt,
...);
void
kutil_verr
(const struct kreq *r,
const char *ident, const char
*fmt, va_list ap);
void
kutil_verrx
(const struct kreq
*r, const char *ident, const
char *fmt, va_list ap);
void
kutil_vinfo
(const struct kreq
*r, const char *ident, const
char *fmt, va_list ap);
void
kutil_vlog
(const struct kreq *r,
const char *level, const char
*ident, const char *fmt, va_list
ap);
void
kutil_vlogx
(const struct kreq
*r, const char *level, const
char *ident, const char *fmt,
va_list ap);
void
kutil_vwarn
(const struct kreq
*r, const char *ident, const
char *fmt, va_list ap);
void
kutil_vwarnx
(const struct kreq
*r, const char *ident, const
char *fmt, va_list ap);
void
kutil_warn
(const struct kreq *r,
const char *ident, const char
*fmt, ...);
void
kutil_warnx
(const struct kreq
*r, const char *ident, const
char *fmt, ...);
These functions consistently format and output messages on
standard error. See
kutil_openlog(3)
for configuring an alternative log destination.
These functions accept the following variables:
- const struct kreq *r
- Active request handle opened with
khttp_parse(3).
If
NULL
, the remote host field will be
omitted.
- const char *level
- A human-readable log level. If
NULL
, no level is
printed. For functions not accepting this argument, the
INFO
, WARN
, and
ERROR
values are used for the informational,
warning, and error functions, respectively.
- const char *ident
- The client identity of the caller. This adheres to the common CGI practise
of connecting a message to a logged-in user. If
NULL
, no ident is printed.
- const char *fmt
- The
printf(3)
style format string for the variable argument or argument list following.
This formats the log message. If
NULL
, no message
is printed.
The
kutil_err
(),
kutil_errx
(),
kutil_verr
(), and
kutil_verrx
()
functions exit with EXIT_FAILURE
. They never
return.
The log messages are filtered on output: non-printable (see
isprint(3))
characters are replaced with “?” and space characters (\a, \b,
\f, \n, \r, \t, \v, \0) are shown as literal escape characters.
The
kutil_err
(),
kutil_verr
(),
kutil_log
(),
kutil_vlog
(),
kutil_vwarn
(),
and
kutil_warn
()
functions print out the current errno following the
log message.
The output format is as follows, with a trailing newline:
addr ident [date] level
msg
addr ident [date] level msg:
errmsg
Here, "addr" is the remote host as passed to the CGI
script or "-" if r is
NULL
; and where "ident" "level"
and "msg", if NULL
, will be rendered as
"-". The date is formatted as an HTTP date (RFC 822) in GMT.