# System Log ## Viewing the system log from LuCi Select the `Status >> System Log` menu entry. ![alt text](images/librecmc-luci-selecting-system-log.png "Selecting the System Log page in LuCi") ![alt text](images/librecmc-luci-system-log.png "The System Log page in LuCi") The `System Log` page in LuCi does not have an interface for filtering output. Therefore, you will likely want to use the shell interface. ## Viewing the system log from the shell Once logged in via SSH, use the `logread` command ```bash Usage: logread [options] Options: -s Path to ubus socket -l Got only the last 'count' messages -e Filter messages with a regexp -r Stream message to a server -F Log file -S Log size -p PID file -h Add hostname to the message -P Prefix custom text to streamed messages -f Follow log messages -u Use UDP as the protocol -t Add an extra timestamp -0 Use \0 instead of \n as trailer when using TCP ``` For example: ```bash root@libreCMC:~$ logread | grep 'kern\.warn' Mon Jan 15 20:22:01 2018 kern.warn kernel: [ 0.000000] No valid device tree found, continuing without Mon Jan 15 20:22:01 2018 kern.warn kernel: [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. Mon Jan 15 20:22:01 2018 kern.warn kernel: [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes Mon Jan 15 20:22:01 2018 kern.warn kernel: [ 0.669305] Crashlog allocated RAM at address 0x3f00000 Mon Jan 15 20:22:01 2018 kern.warn kernel: [ 0.752178] m25p80 spi0.0: found mx25l12805d, expected m25p80 ``` One should be able to use `logread -e` instead of `grep`, but it seems that not all the same regular expressions work for both: ```bash root@libreCMC:~$ logread -e 'kern\.warn' # and other similar variations (no output) ``` The system log is contained in a limited size, circular buffer in memory. So, if you have some process writing messages periodically, this will eventually erase messages that were only written once. ## Configuring the system log TODO ## Monitoring the system log TODO