---
title: "The loggen manual page"
url: "https://axoflow.com/docs/axosyslog-core/4.28/app-man-syslog-ng/loggen.1/"
last_modified: "2026-09-23T14:09:57+02:00"
---

> For the complete documentation index, see [llms.txt](https://axoflow.com/docs/axosyslog-core/4.28/llms.txt).

# The loggen manual page

## Name

`loggen` — Generate syslog messages at a specified rate

Note: If you don’t have AxoSyslog installed and want to run `loggen` from a container, you can use:

```shell
docker run --rm -ti --entrypoint "" ghcr.io/axoflow/axosyslog /usr/bin/loggen [options] target [port]
```

## Synopsis

`loggen [options] target [port]`

## Description

> **Note:**
> The `loggen` application is distributed with the AxoSyslog system logging application, and is usually part of the AxoSyslog package.

The `loggen` application is a tool to test and stress-test your syslog server and the connection to the server. It can send syslog messages to the server at a specified rate using a number of connection types and protocols, including TCP, UDP, and unix domain sockets. The messages can be generated automatically (repeating the `PADD`string over and over), or read from a file or the standard input.

When `loggen` finishes sending the messages, it displays the following statistics:

- `average rate`: The average rate of the sent messages in messages/second.
- `count`: The total number of messages sent.
- `time`: The time required to send the messages in seconds.
- `average message size`: The average size of the sent messages in bytes.
- `bandwidth`: The average bandwidth used for sending the messages in kilobytes/second.

## Options

- `--active-connections <number-of-connections>`

  Number of connections `loggen` will use to send messages to the destination. This option is usable only when using TCP or TLS connections to the destination. Default value: 1

  The `loggen` utility waits until every connection is established before starting to send messages. See also the `--idle-connections` option.
- `--client-port`

  Available in AxoSyslog 4.14 and later.

  Use the specified outbound port to connect to the server. Usable only for a single connection (when `--active-connections` is 1 and `--idle-connections` is not set).
- `--debug`

  Enable debug messages of `loggen`.
- `--dgram` or `-D`

  Use datagram socket (`UDP` or `unix-dgram`) to send the messages to the target. Requires the `--inet` option as well.
- `--dont-parse` or `-d`

  Do not parse the lines read from the input files, send them as received.
- `--help` or `-h`

  Display a brief help message.
- `--idle-connections <number-of-connections>`

  Number of idle connections `loggen` will establish to the destination. Note that `loggen` will not send any messages on idle connections, but the connection is kept open using keep-alive messages. This option is usable only when using TCP or TLS connections to the destination. See also the `--active-connections` option. Default value: 0
- `--inet` or `-i`

  Use the TCP (by default) or UDP (when used together with the `--dgram` option) protocol to send the messages to the target.
- `--interval <seconds>` or `-I <seconds>`

  The number of seconds `loggen` will run. Default value: 10

  > **Note:**
  > Note that when the `--interval` and `--number` are used together, `loggen` will send messages until the period set in `--interval` expires or the amount of messages set in `--number` is reached, whichever happens first.
- `--ipv6` or `-6`

  Specify the destination using its IPv6 address. Note that the destination must have a real IPv6 address.
- `--loop-reading` or `-l`

  Read the file specified in `--read-file` option in loop: loggen will start reading from the beginning of the file when it reaches the end of the file.
- `--number <number-of-messages>` or `-n <number-of-messages>`

  Number of messages to generate.

  > **Note:**
  > Note that when the `--interval` and `--number` are used together, `loggen` will send messages until the period set in `--interval` expires or the amount of messages set in `--number` is reached, whichever happens first.
- `--no-framing` or `-F`

  Do not use the framing of the IETF-syslog protocol style, even if the `--syslog-proto` option is set.
- `--perf`

  Disables rate limiting to send as many messages as possible.
- `--permanent` or `-T`

  Keep sending logs indefinitely, without time limit.
- `--proxied [<version>]` or `-H [<version>]`

  Prepend a PROXY protocol header to the generated messages. The optional argument selects the version of the PROXY protocol: `1` or `2`. Default value: `1`

  Use the `--proxy-src-ip`, `--proxy-dst-ip`, `--proxy-src-port`, and `--proxy-dst-port` options to set the addresses in the header.
- `--proxied-tls-passthrough`

  Send the PROXY protocol header before the encrypted payload. Use it together with the `--proxied` and `--use-ssl` options.
- `--proxy-dst-ip <ip-address>`

  The destination IP address to set in the PROXY protocol header.
- `--proxy-dst-port <port>`

  The destination port to set in the PROXY protocol header.
- `--proxy-src-ip <ip-address>`

  The source IP address to set in the PROXY protocol header.
- `--proxy-src-port <port>`

  The source port to set in the PROXY protocol header.
- `--quiet` or `-Q`

  Display statistics only when `loggen` is finished. If not set, the statistics are displayed every second.
- `--rate <message/second>` or `-r <message/second>`

  The number of messages generated per second for every active connection. Default value: 1000. To disable rate limiting, use the `--perf` flag.

  If you want to change the message rate while loggen is running, send SIGUSR1 to double the message rate, or SIGUSR2 to halve it:

  `kill -USR1 <loggen-pid>`

  `kill -USR2 <loggen-pid>`
- `--rate-burst-start`

  Start sending messages at the full rate set in the `--rate` option, instead of ramping the rate up gradually. Useful for testing rate limiting.
- `--read-file <filename>` or `-R <filename>`

  Read the messages from a file and send them to the target. See also the `--skip-tokens` option.

  Specify `-` as the input file to read messages from the standard input (stdio). Note that when reading messages from the standard input, `loggen` can only use a single thread. The `-R -`parameters must be placed at end of command, like: `loggen 127.0.0.1 1061 --read-file -`
- `--reconnect`

  Try to reconnect when destination connections are lost.
- `--sdata <data-to-send>` or `-p <data-to-send>`

  Send the argument of the `--sdata` option as the SDATA part of IETF-syslog (RFC5424 formatted) messages. Use it together with the `--syslog-proto` option. For example: `--sdata "[test name=\\"value\\"]`
- `--size <message-size>` or `-s <message-size>`

  The size of a syslog message in bytes. Default value: 256. Minimum value: 127 bytes, maximum value: 8192 bytes.
- `--skip-tokens <number>`

  Skip the specified number of space-separated tokens (words) at the beginning of every line. For example, if the messages in the file look like `foo bar message`, `--skip-tokens 2` skips the `foo bar` part of the line, and sends only the `message` part. Works only when used together with the `--read-file` parameter. Default value: 0
- `--stream` or `-S`

  Use a stream socket (TCP or unix-stream) to send the messages to the target.
- `--syslog-proto` or `-P`

  Use the new IETF-syslog message format as specified in RFC5424. By default, loggen uses the legacy BSD-syslog message format (as described in RFC3164). See also the `--no-framing` option.
- `--unix </path/to/socket>` or `-x </path/to/socket>`

  Use a UNIX domain socket to send the messages to the target.
- `--use-ssl` or `-U`

  Use an SSL-encrypted channel to send the messages to the target. Note that it is not possible to check the certificate of the target, or to perform mutual authentication.

## Examples

The following command generates 100 messages per second for ten minutes, and sends them to port 2010 of the localhost via TCP. Each message is 300 bytes long.

```shell
loggen --stream --size 300 --rate 100 --interval 600 127.0.0.1 2010
```

The following command is similar to the one above, but uses the UDP protocol.

```shell
loggen --inet --dgram --size 300 --rate 100 --interval 600 127.0.0.1 2010
```

Send a single message on TCP6 to the `::1` IPv6 address, port `1061:`

```shell
loggen --stream --ipv6 --number 1 ::1 1061
```

Send a single message on UDP6 to the `::1` IPv6 address, port `1061:`

```shell
loggen --ipv6 --dgram --number 1 ::1 1061
```

Send a single message using a unix domain-socket:

```shell
loggen --unix --stream --number 1 </path/to/socket>
```

Read messages from the standard input (`stdio`) and send them to the localhost:

```shell
loggen 127.0.0.1 1061 --stream --read-file -
```

## Files

`/opt/syslog-ng/bin/loggen`

## See also

[syslog-ng.conf.5](https://axoflow.com/docs/axosyslog-core/app-man-syslog-ng/syslog-ng.conf.5/)

## Getting help

- The up-to-date documentation of AxoSyslog is available on the [AxoSyslog documentation site](https://axoflow.com/docs/axosyslog-core/).
- For news and notifications about AxoSyslog, visit the [Axoflow blog](https://axoflow.com/blog/).
- If you want to contact the developers directly to help with problems or report issues, contact us on [Discord](https://discord.gg/583Z4wjem2) or [GitHub](https://github.com/axoflow/axosyslog/issues/).

This manual page is maintained by [Axoflow](https://axoflow.com/)

Last modified September 23, 2026: [Typo fixes (f8ce1864)](https://github.com/axoflow/axosyslog-core-docs/commit/f8ce1864cd0b21cc012d57c7dde41b8e37d8a58a)
