xlog Module

Elena-Ramona Modroiu


Edited by

Elena-Ramona Modroiu

Table of Contents

1. Admin Guide
1. Overview
2. Implemented Specifiers
3. Dependencies
3.1. Kamailio Modules
3.2. External Libraries or Applications
4. Parameters
4.1. buf_size (integer)
4.2. force_color (integer)
4.3. long_format (integer)
4.4. prefix (str)
4.5. log_facility (string)
4.6. log_colors (string)
5. Functions
5.1. xlog([ [facility,] level,] format)
5.2. xdbg(format)
5.3. xlogl([ [facility,] level,] format)
5.4. xdbgl(format)

List of Examples

1.1. Set buf_size parameter
1.2. Set force_color parameter
1.3. Set long_format parameter
1.4. Set prefix parameter
1.5. log_facility example
1.6. log_colors example
1.7. xlog usage
1.8. xdbg usage

Chapter 1. Admin Guide

1. Overview

This module provides the possibility to print user formatted log or debug messages from Kamailio scripts, similar to the printf function. A C-style printf specifier is replaced with a part of the SIP request or other variables from system. Section 2, “Implemented Specifiers” shows what can be printed out.

2. Implemented Specifiers

In the xlog function, you use pseudo-variables, that are a part of Kamailio core and are used by other modules as well (e.g., avpops in the function avp_printf())

The most important changes from earlier versions of Kamailio are:

  • - '%' has been replaced by '$'

  • - to print a header, use now $hdr(header_name[index]) instead of %{header_name[index]}

  • - to print an AVP, use now $avp([si]:avp_id[index]) instead of %{[si]:avp_id[index]} or $avp([$avp_alias[index]) instead of %{[$avp_alias[index]}

The full list of available pseudo-variables in Kamailio is available at: http://kamailio.org/wiki/

3. Dependencies

3.1. Kamailio Modules

The following modules must be loaded before this module:

  • No dependencies on other Kamailio modules.

3.2. External Libraries or Applications

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

  • None.

4. Parameters

4.1. buf_size (integer)

Maximum size of the log message.

Default value is 4096.

Example 1.1. Set buf_size parameter

modparam("xlog", "buf_size", 8192)

4.2. force_color (integer)

When set to 1, forces color printing even if log_stderror=0.

Default value is 0.

Example 1.2. Set force_color parameter

modparam("xlog", "force_color", 0)

4.3. long_format (integer)

When set to 1, prints config file name in xlogl() and xdbgl() before line number.

Default value is 0.

Example 1.3. Set long_format parameter

modparam("xlog", "long_format", 1)

4.4. prefix (str)

Prefix to be printed before the log message.

Default value is "<script>: ".

Example 1.4. Set prefix parameter

modparam("xlog", "prefix", "-xlog: ")

4.5. log_facility (string)

Syslog facility to be used when printing xlog messages. In this way you can get the xlog messages in a separate syslog file than the debug messages issued from source code.

Default value is NULL (unset - use same facility as source code debug messages).

Example 1.5. log_facility example

modparam("xlog", "log_facility", "LOG_DAEMON")

4.6. log_colors (string)

Update terminal colors used by core for log levels (when log_stderr=1 and log_color=1). The value has to be 'logname=colors', where colors is two characters specifying foreground and background in the same format as $C(xy) variable.

The parameter can be set many times, its value can also be a ';'-separated list of color specs.

Default value is NULL.

Example 1.6. log_colors example

modparam("xlog", "log_colors", "L_ERR=cr")
modparam("xlog", "log_colors", "L_ERR=cr;L_WARN=px")

5. Functions

5.1.  xlog([ [facility,] level,] format)

Print a formated message using LOG function.

Meaning of the parameters are as follows:

  • facility - The log facility that will be used for this single log message.

    If this parameter is missing, the implicit facility is either the facility set with the 'log_facility' module parameter or the core's log facility.

  • level - The level that will be used in LOG function. It can be:

    • L_ALERT - log level -5

    • L_BUG - log level -4

    • L_CRIT - log level -3

    • L_ERR - log level -1

    • L_WARN - log level 0

    • L_NOTICE - log level 1

    • L_INFO - log level 2

    • L_DBG - log level 3

    • $pv - any valid pseudo-variable, that has an integer value. See above options for valid log levels.

    If it is not a pseudo-variable, then what really matters is the third letter of the value. If the log level is higher than the debug global parameter, the message is not printed to syslog.

    If this parameter is missing, the implicit log level is 'L_ERR'.

  • format - The formatted string to be printed.

This function can be used from ANY_ROUTE.

Example 1.7. xlog usage

xlog("L_ERR", "time [$Tf] method ($rm) r-uri ($ru) 2nd via ($hdr(via[1]))\n");
xlog("time [$Tf] method ($rm) r-uri ($ru) 2nd via ($hdr(via[1]))\n");
$var(loglevel) = 2;
xlog("$var(loglevel)", "time [$Tf] method ($rm) r-uri ($ru)\n");
xlog("LOG_LOCAL3", "L_ERR", "this message will be sent to syslog facility LOG_LOCAL3\n");

5.2.  xdbg(format)

Print a formatted message using DBG function.

Meaning of the parameters is as follows:

  • format - The formatted string to be printed.

This function can be used from ANY_ROUTE.

Example 1.8. xdbg usage

xdbg("time $Cbx[$Tf]$Cxx method ($rm) r-uri ($ru)\n");

5.3.  xlogl([ [facility,] level,] format)

Similar to xlog(), in addition is printing cfg line number at the beginning of message.

5.4.  xdbgl(format)

Similar to xdbg(), in addition is printing cfg line number at the beginning of message.