summaryrefslogtreecommitdiffstats
path: root/lib/umberlog.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/umberlog.3')
-rw-r--r--lib/umberlog.3211
1 files changed, 211 insertions, 0 deletions
diff --git a/lib/umberlog.3 b/lib/umberlog.3
new file mode 100644
index 0000000..ee7be30
--- /dev/null
+++ b/lib/umberlog.3
@@ -0,0 +1,211 @@
+.\" umberlog.3 -- CEE-enhanced syslog manual
+.\"
+.\" Copyright (c) 2012 BalaBit IT Security Ltd.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY BALABIT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL BALABIT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.TH UMBERLOG 3 2012-03-22 "libumberlog" "CEE\-enhanced syslog Manual"
+
+.SH NAME
+ul_openlog, ul_syslog, ul_vsyslog, ul_legacy_syslog,
+ul_legacy_vsyslog \- send CEE-enhanced messages to the system logger
+.br
+ul_format, ul_vformat \- format CEE\-enhanced messages, without
+sending them to the system logger
+
+.SH SYNOPSIS
+.B #include <umberlog.h>
+.sp
+.BI "void ul_openlog(const char *" ident ", int " option ", int " facility );
+.br
+
+.br
+.BI "void ul_syslog(int " priority ", const char *" format ", ...);"
+.br
+.BI "void ul_vsyslog(int " priority ", const char *" format ", va_list " ap );
+.br
+
+.br
+.BI "void ul_legacy_syslog(int " priority ", const char *" format ", ...);"
+.br
+.BI "void ul_legacy_vsyslog(int " priority ", const char *" format ", va_list " ap );
+.br
+
+.br
+.BI "char *ul_format(int " priority ", const char *" format ", ...);"
+.br
+.BI "char *ul_vformat(int " priority ", const char *" format ", va_list " ap );
+
+.SH DESCRIPTION
+.BR ul_openlog (),
+(also aliased to
+.BR openlog ())
+is a wrapper around the original
+.BR openlog ()
+function, which opens a connection to the system logger for a
+program. The updated version adds support for a number of new option
+flags, described below.
+
+.sp
+.BR ul_legacy_syslog ()
+and
+.BR ul_legacy_vsyslog ()
+are both thin layers over the original
+.BR syslog ()
+and
+.BR vsyslog ()
+functions, and the library overrides the original functions with this
+two. The only change these functions bring, are that the message they
+generate will be a CEE\-enhanced message, with a JSON payload. See
+below for an explanation on what this means.
+
+.sp
+.BR ul_syslog ()
+and
+.BR ul_vsyslog ()
+are two new functions provided by the library, that have similar
+interface to the legacy
+.BR syslog ()
+functions, but they can be used to add arbitrary key-value pairs to
+the emitted message. After the
+.I msg_format
+format string, and any other parameters it refers to, there must be a
+NULL-terminated list of
+.IR key ", " "value format" ", " "format parameters" .
+Each of these pairs, constructed from the
+.I key
+and the
+.BR printf (3)-style
+.I value format
+will be added to the generated message.
+
+.sp
+.BR ul_format ()
+and
+.BR ul_vformat ()
+do the same as the syslog variants above, except the formatted payload
+is not sent to syslog, but returned as a newly allocated string.
+
+.SH "CEE PAYLOAD"
+
+All of the improved
+.BR syslog ()
+functions, the legacy and overridden ones and the new ones too turn
+the original syslog message into a CEE\-enabled JSON payload, with the
+original message put into the
+.I msg
+field, and any additional fields put into the same structure.
+
+By default, unless the
+.B LOG_UL_NODISCOVER
+option flag is set, all of these functions will also add a few
+automatically discovered fields into the payload:
+
+.TP 15
+.I pid
+The process ID of the program, as returned by
+.BR getpid ().
+The value of this is \- by default \- determined at the time of
+calling
+.BR ul_openlog (),
+but if caching is disabled, it will be rechecked every time.
+.TP
+.IR facility " and " priority
+The syslog facility and priority as a text string.
+.TP
+.I program
+The identification set at the time of
+.BR ul_openlog ().
+.TP
+.IR uid " and " gid
+The user and group ID of the process, determined at
+.BR ul_openlog ()
+time by default, unless caching is disabled.
+.TP
+.I host
+The name of the originating host, determined at
+.BR ul_openlog ()
+time by default, using
+.BR gethostname ().
+.TP
+.I timestamp
+High\-precision timestamp, in textual format. Included by default, but
+can be controlled by the
+.B LOG_UL_NOTIME
+option flag at
+.BR ul_openlog ()
+time.
+.PP
+
+.SH "EXTRA OPTION FLAGS"
+The
+.I option
+argument to
+.BR ul_openlog ()
+is an OR of any of the original
+.BR openlog ()
+flags, and these:
+.TP 15
+.B LOG_UL_NODISCOVER
+Disable all automatic\-discovery, and only include the
+.I message
+and any specified
+.I key\-value
+pairs in the generated message.
+.TP
+.B LOG_UL_NOCACHE
+When automatic discovery is enabled, disable caching certain
+properties, that might change between the call to
+.BR openlog ()
+and the
+.BR ul_syslog ()
+invocation.
+.TP
+.B LOG_UL_NOCACHE_UID
+Disable caching the
+.IR uid " and " gid
+caching when automatic discovery is enabled, but do cache the rest.
+.TP
+.B LOG_UL_NOTIME
+Do not add a high\-precision timestamp to the generated message when
+automatic discovery is enabled.
+.PP
+
+.SH EXAMPLES
+.nf
+
+ ul_syslog(LOG_NOTICE, "Logged in user: %s", username,
+ "service", "%s", service,
+ "auth-method", "%s", auth_method,
+ "sessionid", "%d", session_id,
+ NULL);
+.fi
+
+.SH "SEE ALSO"
+.BR syslog (1)
+
+.SH COLOPHON
+This page is part of the
+.I libumberlog
+project, and is available under the same 2-clause BSD license as the
+rest of the project.