项目中使用Mosquitto作为MQTT服务器,在mosquitto.conf配置文件中设置了日志的输出。然而几天过去后日志文件已经变得相当庞大,很不利于查看日志分析问题。故此,想着日志是否可以按照天来存储,查看Mosquitto官网和大量其他关于日志配置的博客后没有发现解决办法,后来无意中看到一篇介绍logrotate的文章,问题解决。
logrotate
logrotate是Linux系统自带命令,用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。它默认的配置文件在:
/etc/logrotate.conf
/etc/logrotate.d/
配置
- 在logrotate.d目录中新建文件mosquitto,可以直接在该目录下使用vim mosquitto命令
- 编辑文件mosquitto,写入:
备注:/var/log/mosquitto/mosquitto.log { daily dateext copytruncate nocompress rotate 15 }
- /var/log/mosquitto/mosquitto.log: mosquitto日志输出文件
- daily: 日志将按照天来转储,也可以设置为weekly和monthly
- dateext: 转储后的日志文件会附加上日期信息,例如转储后文件为mosquitto.log-20181105,如果不加的话,文件名格式就变为了序号mosquitto.log-1
- copytruncate: 备份日志文件并截断,设置为nocopytruncate时备份日志文件但是不截断
- nocompress: 不进行压缩
- rotate 15: 指定日志文件删除之前转储的次数
- 还有其他一些配置参数可以自行搜索,我感觉这篇文章—运维中的日志切割操作梳理介绍比较详细
验证
执行命令
/usr/sbin/logrotate -vf /etc/logrotate.d/mosquitto
完成后可看到在/var/log/mosquitto/目录中多了一个文件mosquitto.log-20181105