Reading the system log
journalctl
is your interface into a single machine’s journal/logging. All service files insert data into the systemd journal. There are a few helpful commands to read the journal:
Read the entire journal
$ journalctl
-- Logs begin at Fri 2013-12-13 23:43:32 UTC, end at Sun 2013-12-22 12:28:45 UTC. --
Dec 22 00:10:21 localhost systemd-journal[33]: Runtime journal is using 184.0K (max 49.9M, leaving 74.8M of free 499.0M, current limit 49.9M).
Dec 22 00:10:21 localhost systemd-journal[33]: Runtime journal is using 188.0K (max 49.9M, leaving 74.8M of free 499.0M, current limit 49.9M).
Dec 22 00:10:21 localhost kernel: Initializing cgroup subsys cpuset
Dec 22 00:10:21 localhost kernel: Initializing cgroup subsys cpu
Dec 22 00:10:21 localhost kernel: Initializing cgroup subsys cpuacct
Dec 22 00:10:21 localhost kernel: Linux version 3.11.7+ ([email protected]) (gcc version 4.6.3 (Gentoo Hardened 4.6.3 p1.13, pie-0.5.2)
...
1000s more lines
Read entries for a specific service
Read entries generated by a specific unit:
$ journalctl -u apache.service
-- Logs begin at Fri 2013-12-13 23:43:32 UTC, end at Sun 2013-12-22 12:32:52 UTC. --
Dec 22 12:32:39 localhost systemd[1]: Starting Apache Service...
Dec 22 12:32:39 localhost systemd[1]: Started Apache Service.
Dec 22 12:32:39 localhost docker[9772]: /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
Dec 22 12:32:39 localhost docker[9772]: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.6 for ServerName
Read entries since boot
Reading just the entries since the last boot is an easy way to troubleshoot services that are failing to start properly:
journalctl --boot
Tail the journal
You can tail the entire journal or just a specific service:
journalctl -f
journalctl -u apache.service -f
Read entries with line wrapping
By default journalctl
passes FRSXMK
command line options to
less
. You can override these options by setting a custom
SYSTEMD_LESS
environment variable with omitted S
option:
SYSTEMD_LESS=FRXMK journalctl
Read logs without pager:
journalctl --no-pager
Debugging journald
If you’ve faced some problems with journald you can enable debug mode following the instructions below.
Enable debugging manually
mkdir -p /etc/systemd/system/systemd-journald.service.d/
Create a
Drop-In
/etc/systemd/system/systemd-journald.service.d/10-debug.conf
with following content:
[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
And restart systemd-journald
service:
systemctl daemon-reload
systemctl restart systemd-journald
dmesg | grep systemd-journald
Enable debugging via a Container Linux Config
Define a Drop-In in a Container Linux Config :
systemd:
units:
- name: systemd-journald.service
dropins:
- name: 10-debug.conf
contents: |
[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
More information
Getting Started with systemd Network Configuration with networkd