pmnormalize: Log Message Normalization parser

Module Name:

pmnormalize

Author:

Pascal Withopf <pascalwithopf1@gmail.com>

Available since:

8.27.0

Normalizes incoming messages with liblognorm and can emit per-parser liblognorm debug records to rsyslog diagnostics or a dedicated file.

Purpose

This parser normalizes messages with the specified rules and populates the properties for further use.

Configuration Parameters

Note

Parameter names are case-insensitive; camelCase is recommended for readability.

Parser Parameters

rulebase

type

default

mandatory

obsolete legacy directive

word

none

no

none

Specifies which rulebase file is to use. If there are multiple pmnormalize instances, each one can use a different file. However, a single instance can use only a single file. This parameter or rule MUST be given, because normalization can only happen based on a rulebase. It is recommended that an absolute path name is given. Information on how to create the rulebase can be found in the liblognorm manual.

rule

type

default

mandatory

obsolete legacy directive

array

none

no

none

Contains an array of strings which will be put together as the rulebase. This parameter or rulebase MUST be given, because normalization can only happen based on a rulebase.

undefinedPropertyError

type

default

mandatory

obsolete legacy directive

binary

off

no

none

With this parameter an error message is controlled, which will be put out every time pmnormalize can’t normalize a message.

debug

type

default

mandatory

obsolete legacy directive

binary

off

no

none

Enables verbose liblognorm debugging for this parser. By default, trace records are sent to rsyslog’s internal diagnostic stream.

RainerScript usage:

parser(name="custom.pmnormalize" type="pmnormalize"
       rulebase="/path/to/rules.rb" debug="on")

YAML usage:

parsers:
  - name: custom.pmnormalize
    type: pmnormalize
    rulebase: /path/to/rules.rb
    debug: on

debugFile

type

default

mandatory

obsolete legacy directive

word

none

no

none

Redirects this parser’s liblognorm debug records to the specified append-only file. Requires debug=”on” and causes configuration to fail if the file cannot be opened.

RainerScript usage:

parser(name="custom.pmnormalize" type="pmnormalize"
       rulebase="/path/to/rules.rb" debug="on"
       debugFile="/path/to/pmnormalize-debug.log")

YAML usage:

parsers:
  - name: custom.pmnormalize
    type: pmnormalize
    rulebase: /path/to/rules.rb
    debug: on
    debugFile: /path/to/pmnormalize-debug.log

Examples

Normalize messages with rulebase

In this sample messages are received via imtcp. Then they are normalized with the given rulebase and written to a file.

module(load="imtcp")
module(load="pmnormalize")

input(type="imtcp" port="13514" ruleset="ruleset")

parser(name="custom.pmnormalize" type="pmnormalize" rulebase="/tmp/rules.rulebase")

ruleset(name="ruleset" parser="custom.pmnormalize") {
     action(type="omfile" file="/tmp/output")
}

Normalize messages with rules specified

Same as above, but messages are normalized with the given rule array.

module(load="imtcp")
module(load="pmnormalize")

input(type="imtcp" port="10514" ruleset="outp")

parser(name="custom.pmnormalize" type="pmnormalize" rule=[
             "rule=:<%pri:number%> %fromhost-ip:ipv4% %hostname:word% %syslogtag:char-to:\\x3a%: %msg:rest%",
             "rule=:<%pri:number%> %hostname:word% %fromhost-ip:ipv4% %syslogtag:char-to:\\x3a%: %msg:rest%"])

ruleset(name="outp" parser="custom.pmnormalize") {
     action(type="omfile" File="/tmp/output")
}

Support: rsyslog Assistant | GitHub Discussions | GitHub Issues: rsyslog source project

Contributing: Source & docs: rsyslog source project

© 2008–2026 Rainer Gerhards and others. Licensed under the Apache License 2.0.