– Kamailio SIP Server –

Basic Kamailio (OpenSER) Logging

This is a way to setup syslog logging for Kamailio (OpenSER). This setup was based on Slackware 10.2, so your configuration may need to be modified for your distribution.

Configuration

Kamailio (OpenSER) Configuration

First, set these configuration options in your kamailio.cfg:

debug=3  # debug level, 1 is low and 4 is high (lots of output)
log_facility=LOG_LOCAL7

loadmodule "/usr/local/lib/kamailio/modules/xlog.so"

Syslog Configuration

Next, modify your syslog.conf (should be in /etc/syslog.conf), and add this line:

# Kamailio (OpenSER) messages, make sure this spacing is done with tabs, spaces may cause errors
local7.*                                            -/var/log/kamailio

Remarks:

  • the '-' before the name of the file means asynchronous writing, it is important to have it not to add performance penalty
  • if you don't want messages from Kamailio to /var/log/messages anymore, be sure you add local7.none to the line related to that file

Create the log file:

touch /var/log/kamailio

Now, in Kamailio (OpenSER), to do some custom logging within your route (it will still catch all regular output from Kamailio, of course), I like to use xlog. Regular log will work, too.

Extra Logging in Kamailio (OpenSER)

xlog("L_WARN", "Some message at level WARNING");

The first argument sets the level of the logging, and the next is the message.

Log Rotation

logrotate.conf

Within /etc/logrotate.conf, you can configure general paramters for your log rotation. My Slackware setup by default looks like this.

# /etc/logrotate.conf
#
# logrotate is designed to ease administration of systems that generate large
# numbers of log files.  It allows automatic rotation, compression, removal, and
# mailing of log files.  Each log file may be handled daily, weekly, monthly, or
# when it grows too large.
#
# logrotate is normally run daily from root's crontab.
#
# For more details, see "man logrotate".

# rotate log files weekly:
weekly

# keep 4 weeks worth of backlogs:
rotate 4

# create new (empty) log files after rotating old ones:
create

# uncomment this if you want your log files compressed:
#compress

# some packages install log rotation information in this directory:
include /etc/logrotate.d

# Rotate /var/log/wtmp:
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
}

# Note that /var/log/lastlog is not rotated.  This is intentional, and it should
# not be.  The lastlog file is a database, and is also a sparse file that takes
# up much less space on the drive than it appears.

# system-specific logs may be also be configured below:

/etc/logrotate.d/kamailio

Each distribution may be different, but in Slackware 10.2, I created a the file /etc/logrotate.d/kamailio

I filled it with these parameters:

/var/log/kamailio {
    sharedscripts
    postrotate
	/bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Finally, restart Kamailio (OpenSER) & syslog and enjoy!

Questions and corrections, please email to mikebwilliams@gmail.com, or feel free to correct this Wiki yourself.