Go to file
Joachim Wiberg d7576c7fc0 syslogd.service: use journald socket, not /dev/log
This patch fixes integration with systemd-journald, and also sets the
now mandatory KillMode.

When running on systems with systemd-journald certain considerations
must be taken.  These are listed here:

  https://www.freedesktop.org/wiki/Software/systemd/syslog/

In it simplest form, the system as a whole logs through journald and
a BSD syslog daemon then gets its log messages from journald.

NOTE: due to issues with the Debian packaging of rsyslog, the sysklogd
      packages cannot be used to replace rsyslog.  First rsyslog must
      be purged to clear the syslog.socket symlink, then sysklogd can
      be installed.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-06-24 12:46:34 +02:00
.github .github: Disable silent rules in build, use install-strip 2021-01-14 18:48:30 +01:00
debian syslogd.service: use journald socket, not /dev/log 2021-06-24 12:46:34 +02:00
example
lib Update copyright years 2021-01-15 11:16:04 +01:00
man Fix #35: syslogd man page lists -v as verbose mode, is version 2021-06-22 08:24:43 +02:00
src syslogd: support for extracting user level messages from /dev/kmsg 2021-06-21 23:15:10 +02:00
test test: clean up residual test files 2021-05-05 05:01:12 +02:00
.gitignore Ignore GNU global ID files 2021-01-15 08:59:47 +01:00
.travis.yml Revert "Travis-CI: disable clang temporarily for Coverity Scan run" 2021-05-07 04:34:16 +02:00
autogen.sh
ChangeLog.md Update changelogs and bump version for v2.2.3 release 2021-05-11 11:37:18 +02:00
configure.ac Update changelogs and bump version for v2.2.3 release 2021-05-11 11:37:18 +02:00
LICENSE Slight formatting changes for GitHub license detection 2019-12-07 11:07:21 +01:00
Makefile.am debian: initial syslogd/logger/libsyslog0/libsylog-dev packaging 2021-02-21 16:18:12 +01:00
README.md Adjust repology listing below logo, messes up new GitHub layout 2020-08-31 23:11:06 +02:00
syslog.conf
syslogd.service.in syslogd.service: use journald socket, not /dev/log 2021-06-24 12:46:34 +02:00

                  .--.  .--.              .--.
.-----.--.--.-----|  |--|  :-----.-----.--|  |
|__ --|  |  |__ --|    <|  |  _  |  _  |  _  |    RFC3164 :: syslogd for Linux
|_____|___  |_____|__|__|__|_____|___  |_____|    RFC5424 :: w/NetBSD syslogp()
      |_____|                    |_____|

<23>Aug 24 05:14:15 192.0.2.1 myproc[8710]: Kilroy was here.
<23>1 2019-11-04T00:50:15.001234+01:00 troglobit myproc 8710 - - Kilroy was here.

Packaging status BSD Badge Travis Status Coverity Status

Table of Contents

Introduction

This is the continuation of the original Debian/Ubuntu syslog daemon, updated with full RFC3164 and RFC5424 support from NetBSD and FreeBSD. The package includes the libsyslog.{a,so} library with a syslog.h header replacement, the syslogd daemon, and a command line tool called logger.

libsyslog and syslog/syslog.h, derived directly from NetBSD, expose syslogp() and other new features available only in RFC5424:

The syslogd daemon is an enhanced version of the standard Berkeley utility program, updated with DNA from FreeBSD. It provides logging of messages received from the kernel, programs and facilities on the local host as well as messages from remote hosts. Although fully compatible with standard C-library implementations of the syslog() API (GLIBC, musl libc, uClibc), libsyslog must be used in your application to unlock the new RFC5424 syslogp() API.

The included logger tool can be used from the command line, or script, to send RFC5424 formatted messages using libsyslog to syslogd for local or remote logging.

Main differences from the original sysklogd package are:

  • The separate klogd daemon is no longer part of the sysklogd project, syslogd now natively supports logging kernel messages as well
  • Major command line changes to syslogd, for compatibilty with *BSD
  • Supports include /etc/syslog.d/*.conf directive, see example .conf
  • Built-in log-rotation support, with compression by default, useful for embedded systems. No need for cron and/or a separate log rotate daemon
  • Full RFC3164 and RFC5424 support from NetBSD and FreeBSD
  • Support for sending RFC3164 style remote syslog messages, including timestamp and hostname. Defaults to send w/o for compatibility
  • Support for sending RFC5424 style remote syslog messages
  • Support for sending messages to a custom port on a remote server
  • Support for listening to a custom port
  • Support for remote peer filtering, from FreeBSD
  • Support for disabling DNS reverse lookups for each remote log message
  • Support for FreeBSD Secure Mode, remote logging enabled by default(!)
  • Includes a logger tool with RFC5424 capabilities (msgid etc.)
  • Includes a syslog library and system header replacement for logging
  • FreeBSD socket receive buffer size patch
  • Avoid blocking syslogd if console is backed up
  • Touch PID file on SIGHUP, for integration with Finit
  • GNU configure & build system to ease porting/cross-compiling
  • Support for configuring remote syslog timeout

Using -lsyslog

libsyslog is by default installed as a library with a header file:

#include <syslog/syslog.h>

The output from the pkg-config tool holds no surprises:

$ pkg-config --libs --static --cflags libsyslog
-I/usr/local/include -L/usr/local/lib -lsyslog

The prefix path /usr/local/ shown here is only the default. Use the configure script to select a different prefix when installing libsyslog.

For GNU autotools based projects, instead of issuing the pkg-config command manually, use the following in configure.ac:

# Check for required libraries
PKG_CHECK_MODULES([syslog], [libsyslog >= 2.0])

and for your "proggy" in Makefile.am:

proggy_CFLAGS = $(syslog_CFLAGS)
proggy_LDADD  = $(syslog_LIBS)

The distribution comes with an example program that utilizes the NetBSD API and links against libsyslog.

Build & Install

The GNU Configure & Build system use /usr/local as the default install prefix. In many cases this is useful, but this means the configuration files and cache files will also use that same prefix. Most users have come to expect those files in /etc/ and /var/run/ and configure has a few useful options that are recommended to use:

./configure --prefix=/usr --sysconfdir=/etc --runstatedir=/run
make -j5
sudo make install-strip

You may want to remove the --prefix=/usr option. Most users prefer non-distro binaries in /usr/local or /opt.

Building from GIT

If you want to contribute, or just try out the latest but unreleased features, then you need to know a few things about the GNU build system:

  • configure.ac and a per-directory Makefile.am are key files
  • configure and Makefile.in are generated from autogen.sh, they are not stored in GIT but automatically generated for the release tarballs
  • Makefile is generated by configure script

To build from GIT you first need to clone the repository and run the autogen.sh script. This requires automake and autoconf to be installed on your system.

git clone https://github.com/troglobit/sysklogd.git
cd sysklogd/
./autogen.sh
./configure && make

GIT sources are a moving target and are not recommended for production systems, unless you know what you are doing!

Note: some systems may have an older, or a vanilla, version of the GNU autoconf package that does not support --runstatedir (above). Users on such systems are recommended to use --localstatedir, the $runstatedir used by sysklogd is derived from that if missing.

Origin & References

This is the continuation of the original sysklogd by Dr. G.W. Wettstein and Martin Schulze. Currently maintained, and almost completely rewritten with the latest DNA strands from NetBSD and FreeBSD, by Joachim Wiberg. Please file bug reports, or send pull requests for bug fixes and proposed extensions at GitHub.

The project was previously licensed under the GNU GPL, since the removal of klogd the project is now 3-clause BSD licensed.