LOG_SYSTEMD Module

Daniel-Constantin Mierla

   <miconda@gmail.com>

Edited by

Daniel-Constantin Mierla

   <miconda@gmail.com>

   Copyright © 2015 asipto.com
     __________________________________________________________________

   Table of Contents

   1. Admin Guide

        1. Overview
        2. Dependencies

              2.1. Kamailio Modules
              2.2. External Libraries or Applications

        3. Core Logging
        4. Functions

              4.1. sd_journal_print(level, text)
              4.2. sd_journal_send_xavp(name)

   List of Examples

   1.1. Core Logging Replacement with Systemd
   1.2. sd_journal_print usage
   1.3. sd_journal_send_xavp usage

Chapter 1. Admin Guide

   Table of Contents

   1. Overview
   2. Dependencies

        2.1. Kamailio Modules
        2.2. External Libraries or Applications

   3. Core Logging
   4. Functions

        4.1. sd_journal_print(level, text)
        4.2. sd_journal_send_xavp(name)

1. Overview

   It provides logging to systemd journal from the moment of loading this
   module.

2. Dependencies

   2.1. Kamailio Modules
   2.2. External Libraries or Applications

2.1. Kamailio Modules

   The following modules must be loaded before this module:
     * none.

2.2. External Libraries or Applications

   The following libraries or applications must be installed before
   running Kamailio with this module loaded:
     * libsystemd

3. Core Logging

   This module can replace the syslog logging with sending the log
   messages to systemd journal. The logging to systemd is started when
   this module is loaded, before that the default syslog system is used.

   It requires that core parameters log_engine_type to be set to
   'systemd'. It is not enabled if log_stderror=yes.

   Example 1.1. Core Logging Replacement with Systemd
...
log_engine_type="systemd"
...
loadmodule "log_systemd.so"
...

4. Functions

   4.1. sd_journal_print(level, text)
   4.2. sd_journal_send_xavp(name)

4.1.  sd_journal_print(level, text)

   Print the text in the systemd journal at the provided level parameter.

   Both parameters can contain variables.

   For more, see the manual page for function sd_journal_print() in C
   library libsystemd.

   This function can be used from ANY_ROUTE.

   Example 1.2. sd_journal_print usage
...
   sd_journal_print("LOG_INFO", "R-URI is $ru\n");
...

4.2.  sd_journal_send_xavp(name)

   Creates a structured log event in journald.

   The sd_journal_send_xavp(name) function sends a log event in journald,
   based on the fields provided in the xavp whose root name is specified
   as parameter. This function is a wrapper for journald's
   sd_journal_send() function, and allows to specify as many custom fields
   as desired (see sd_journal_send(3)).

   The xavp given as parameter must contain child AVPs with names
   conforming to journald's field name policy (only uppercase letters,
   numbers and underscore), otherwise they will be discarded by journald.

   Some field name have a default meaning for journald:
     * MESSAGE: the human-readable message string for this entry.
     * PRIORTTY: integer priority value between 0 ("emerg") and 7
       ("debug")
     * (...) (see systemd.journald-fields(7))

   This function can be used from ANY_ROUTE.

   Example 1.3. sd_journal_send_xavp usage
request_route {
    $xavp(event=>MESSAGE) = $rm + " request logged with journald";
    $xavp(event[0]=>SIP_MESSAGE) = $mb;
# don't forget the '[0]', otherwise kamailio will create and
# stack new AVPs (see pseudovariable documentation) over the previous one
    $xavp(event[0]=>SIP_CALL_ID) = $ci;
    $xavp(event[0]=>SIP_SRC_PORT) = $sp;
    $xavp(event[0]=>PRIORITY) = 6;
    sd_journal_send_xavp("event");
(...)
}