我司IAC-IMX8MP-Kit开发板搭载NXP i.MX8M Plus SOC,该芯片采用4颗Arm Cortex-A53核心以及1颗Arm Cortex-M7核心。目前开发板默认搭载Yocto文件系统,该文件系统虽然不如Ubuntu等安装第三方软件包方便,但胜在足够精简且运行稳定,今天主要分享其中运行的一种日志管理系统,Journal。
Journal日志管理系统基于systemd文件系统,由systemd-journald服务控制启动,用于收集、存储和管理系统及服务的日志。主要特点在于二进制结构存储、集中管理且支持持久化等,相比较传统/var/log下的syslog更易于存储和管理。我司IAC-IMX8MP-Kit开发板默认并没有持久化journal的日志,导致重启就会丢失日志文件,同时也无法追踪系统开机重启时间,下面就介绍如何持久化日志,并且一些查看日志等操作。
首先,查看/etc/fstab文件,这里是将/var目录挂载为tmp文件系统的地方,需要将其注释,否则每次重启就会清空文件内容,如下图所示:
其次修改配置文件,将其存储方式改为在磁盘里,并且配置相关参数如,同步时间、日志最大占用空间等,如下图所示(/etc/systemd/journald.conf):
其中Storage是存储方式,persistent代表磁盘,SyncIntervalSec为同步时间,单位是秒,而SystemMaxUse就是最大磁盘占用了。
文件类的修改如上所述,还需要专门创建一个文件夹,用于放置保存下来的日志用于后期查看和整理。具体命令如下:
mkdir -p /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
随后重启服务,systemd restart systemd-journal,刷新一下缓存就可在/var/log/journal目录下出现一个新的当前缓存下的日志,如下图所示:
至此,journal的配置工作全部都已经完成。可通过不断操作重启开发板判断持久化是否成功,如下图所示,journal会记录所有重启的时间以及log:
因为篇幅的原因这里就不再过多介绍journal日志系统其他的操作,该日志系统功能强大,能够很好的分析重要重启的log,为诊断问题提供了强有力的手段。