Journal日志服务

Linux环境下的 systemd 使用了 Journal 来管理服务的日志。日志文件目录位于 /run/log/journal/var/log/journal

journalctl

journalctl 是 Journal 日志服务的管理工具

常用命令

查看实时日志

sudo journalctl -f

查看内核日志

sudo journalctl -k

查看服务日志

sudo journalctl -u v2ray.service

查看服务指定日期范围的日志

sudo journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00" -u docker

查看指定级别日志

sudo journalctl -p 0..4 -u docker.service

日志级别: 0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug

查看 journal 日志服务的磁盘使用量

sudo journalctl --disk-usage

清理日志

清理前准备

sudo journalctl --flush 
sudo journalctl --rotate 

按日期清理

sudo journalctl --vacuum-time=1s

按照日志体积清理

sudo journalctl --vacuum-size=256M

配置 journal 日志服务

journal 日志服务的配置文件位于 /etc/systemd/journald.conf,配置项的详细说明参见: man journald.conf

个人的一些修改

# 启用压缩
Compress=yes

# 限流 表示在 RateLimitIntervalSec 时间段内,每个服务最多允许产生 RateLimitBurst 条日志
RateLimitIntervalSec=30s
RateLimitBurst=10000

# 最大日志文件大小
SystemMaxUse=512M
RuntimeMaxUse=64M

# 日志文件的最大保留期限。
MaxRetentionSec=1week

# 向磁盘刷写日志文件的时间间隔,默认值是五分钟。
SyncIntervalSec=5m

# 设置记录到日志文件中的最高日志等级 "emerg"(0), "alert"(1), "crit"(2), "err"(3), "warning"(4), "notice"(5), "info"(6), "debug"(7) 
MaxLevelStore=warning

修改命令

sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.backup

sudo sed -i 's/^#Compress.*/Compress=yes/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#RateLimitIntervalSec.*/RateLimitIntervalSec=1min/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#RateLimitBurst.*/RateLimitBurst=10000/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#SystemMaxUse.*/SystemMaxUse=512M/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#RuntimeMaxUse.*/RuntimeMaxUse=64M/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#MaxRetentionSec.*/MaxRetentionSec=1week/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#SyncIntervalSec.*/SyncIntervalSec=5m/g' /etc/systemd/journald.conf 
sudo sed -i 's/^#MaxLevelStore.*/MaxLevelStore=warning/g' /etc/systemd/journald.conf 

diff /etc/systemd/journald.conf /etc/systemd/journald.conf.backup
sudo systemctl restart systemd-journald