*******************************************
pmrfc3164: Parse RFC3164-formatted messages
*******************************************
=========================== ===========================================================================
**Module Name:** **pmrfc3164**
**Author:** `Rainer Gerhards `_
=========================== ===========================================================================
Purpose
=======
This parser module is for parsing messages according to the traditional/legacy
syslog standard :rfc:`3164`
It is part of the default parser chain.
.. note::
``pmrfc3164`` is built into rsyslog and must not be loaded with
``module(load="pmrfc3164")``. Configure parameters via the
``parser`` directive.
The parser can also be customized to allow the parsing of specific formats,
if they occur.
Configuration Parameters
========================
.. note::
Parameter names are case-insensitive; CamelCase is recommended for readability.
Parser Parameters
-----------------
.. list-table::
:widths: 30 70
:header-rows: 1
* - Parameter
- Summary
* - :ref:`param-pmrfc3164-permit-squarebracketsinhostname`
- .. include:: ../../reference/parameters/pmrfc3164-permit-squarebracketsinhostname.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-permit-slashesinhostname`
- .. include:: ../../reference/parameters/pmrfc3164-permit-slashesinhostname.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-permit-atsignsinhostname`
- .. include:: ../../reference/parameters/pmrfc3164-permit-atsignsinhostname.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-force-tagendingbycolon`
- .. include:: ../../reference/parameters/pmrfc3164-force-tagendingbycolon.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-remove-msgfirstspace`
- .. include:: ../../reference/parameters/pmrfc3164-remove-msgfirstspace.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-detect-yearaftertimestamp`
- .. include:: ../../reference/parameters/pmrfc3164-detect-yearaftertimestamp.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-detect-headerless`
- .. include:: ../../reference/parameters/pmrfc3164-detect-headerless.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-headerless-hostname`
- .. include:: ../../reference/parameters/pmrfc3164-headerless-hostname.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-headerless-tag`
- .. include:: ../../reference/parameters/pmrfc3164-headerless-tag.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-headerless-ruleset`
- .. include:: ../../reference/parameters/pmrfc3164-headerless-ruleset.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-headerless-errorfile`
- .. include:: ../../reference/parameters/pmrfc3164-headerless-errorfile.rst
:start-after: .. summary-start
:end-before: .. summary-end
* - :ref:`param-pmrfc3164-headerless-drop`
- .. include:: ../../reference/parameters/pmrfc3164-headerless-drop.rst
:start-after: .. summary-start
:end-before: .. summary-end
Signal Handling
===============
HUP Signal Support
------------------
This parser module supports the HUP signal for log rotation when using the
``headerless.errorfile`` parameter. When rsyslog receives a HUP signal, the
module will:
1. Close the current headerless error file
2. Automatically reopen it on the next write operation
This allows external log rotation tools (like ``logrotate``) to safely rotate
the headerless error file by moving/renaming it and then sending a HUP signal
to rsyslog.
**Example log rotation configuration:**
.. code-block:: none
/var/log/rsyslog-headerless.log {
daily
rotate 7
compress
delaycompress
postrotate
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
Examples
========
Receiving malformed RFC3164 messages
------------------------------------
We assume a scenario where some of the devices send malformed RFC3164
messages. The parser module will automatically detect the malformed
sections and parse them accordingly.
.. code-block:: none
module(load="imtcp")
input(type="imtcp" port="514" ruleset="customparser")
parser(name="custom.rfc3164"
type="pmrfc3164"
permit.squareBracketsInHostname="on"
detect.YearAfterTimestamp="on")
ruleset(name="customparser" parser="custom.rfc3164") {
... do processing here...
}
.. toctree::
:hidden:
../../reference/parameters/pmrfc3164-permit-squarebracketsinhostname.rst
../../reference/parameters/pmrfc3164-permit-slashesinhostname.rst
../../reference/parameters/pmrfc3164-permit-atsignsinhostname.rst
../../reference/parameters/pmrfc3164-force-tagendingbycolon.rst
../../reference/parameters/pmrfc3164-remove-msgfirstspace.rst
../../reference/parameters/pmrfc3164-detect-yearaftertimestamp.rst
../../reference/parameters/pmrfc3164-detect-headerless.rst
../../reference/parameters/pmrfc3164-headerless-hostname.rst
../../reference/parameters/pmrfc3164-headerless-tag.rst
../../reference/parameters/pmrfc3164-headerless-ruleset.rst
../../reference/parameters/pmrfc3164-headerless-errorfile.rst
../../reference/parameters/pmrfc3164-headerless-drop.rst