pipe: Collecting messages from named pipes
The pipe driver opens a named pipe with the specified name and listens for messages. It is used as the native message delivery protocol on HP-UX.
The pipe driver has a single required parameter, specifying the filename of the pipe to open. For the list of available optional parameters, see pipe() source options.
NOTE: If syslog-ng cannot create the pipe, it aborts and produces an error. This could be caused by the lack of a write permission, or missing directory. The latter of the two can be fixed by using the create-dirs(yes)
option.
Declaration
pipe(filename);
NOTE: As of syslog-ng Open Source Edition 3.0.2, pipes are created automatically. In earlier versions, you had to create the pipe using the mkfifo(1) command.
Pipe is very similar to the file() driver, but there are a few differences, for example, pipe() opens its argument in read-write mode, therefore it is not recommended to be used on special files like /proc/kmsg.
NOTE: If the fifo
file is deleted, and the user creates a new one, syslog-ng OSE will still attempt to access the old file until syslog-ng OSE is restarted. Make sure to restart syslog-ng OSE after creating a new fifo
file.
CAUTION:
It is not recommended to use pipe() on anything else than real pipes.
By default, syslog-ng OSE uses the flags(no-hostname) option for pipes,
meaning that syslog-ng OSE assumes that the log messages received from the
pipe do not contain the hostname field. If your messages do contain the hostname field, use flags(expect-hostname).
Example: Using the pipe() driver
source s_pipe {
pipe("/dev/pipe" pad-size(2048));
};