Installation | Topics | Beyond Lino
About logging¶
Lino comes with a mature default configuration for logging that is designed to work out of the box.
This document explains logging to a system administrator of a Lino production site. Developers might also want to read About logging.
The default logging config¶
The Lino default configuration makes a production site logs to the
systemd
journal with the site’s project_name
as syslog identifier.
How to watch the latest 100 log entries of your site:
$ sudo journalctl -n 100 -f -t mysite
See also Systemd Cheatsheet.
Lino logging configuration¶
Some settings influence logging:
Setting the logging level using environment variables¶
You can use environment variables LINO_LOGLEVEL
,
LINO_FILE_LOGLEVEL
and LINO_SQL_LOGLEVEL
to control the
logging level.
- LINO_LOGLEVEL¶
The logging level to use for both console and file handlers. It should be one of INFO, DEBUG etc.
- LINO_FILE_LOGLEVEL¶
The logging level to use for “file” handlers (either the systemd journal or the
lino.log
file) when you want this to be different from
LINO_LOGLEVEL
. It should be one of INFO, DEBUG etc.
- LINO_SQL_LOGLEVEL¶
The logging level to set for the django.db.backends
handler instead of the default value WARNING
.
The default logging level for the django.db.backends
handler is WARNING. You can change this default value by setting the
LINO_SQL_LOGLEVEL
variable.
Configure logging yourself¶
You can choose to not use the default logging config by defining your own
LOGGING
and LOGGING_CONFIG
. See the Django’s doc about
Logging.
Configuring logrotate¶
This section is no longer needed.
To activate logging to a file, you simply add a symbolic link named
log
which points to the actual location:
$ sudo mkdir -p /var/log/lino/
$ sudo chown :www-data /var/log/lino/
$ sudo chmod g+ws /var/log/lino/
$ sudo mkdir /var/log/lino/prj1/
$ cd ~/mypy/prj1/
$ ln -s /var/log/lino/prj1/ log/
We recommend a file /etc/logrotate.d/lino
with something like:
/path/to/lino_sites/prod/log/lino.log {
weekly
missingok
rotate 156
compress
delaycompress
notifempty
create 660 root www-data
su root www-data
sharedscripts
}
After changes in the config you can tell logrotate to force them:
$ sudo logrotate -f /etc/logrotate.d/lino
Logging all bash commands to syslog¶
Add the following to your system-wide /etc/bash.bashrc
:
# copied from http://backdrift.org/logging-bash-history-to-syslog-using-traps
function log2syslog
{
declare COMMAND
COMMAND=$(fc -ln -0)
logger -p local1.notice -t bash -i -- "${USER}:${COMMAND}"
}
trap log2syslog DEBUG