配置 /etc/systemd/journald.conf 文件时,需要根据你的系统资源、日志需求以及性能要求来进行调整。以下是一些常见的配置建议及说明:

1. 存储类型:Storage=

定义日志的存储位置:

  • volatile:只存储在内存中,系统重启后日志会丢失。
  • persistent:存储在 /var/log/journal/ 中,重启后日志不会丢失。
  • auto(默认):如果 /var/log/journal/ 存在,使用持久存储,否则使用内存存储。
  • none:不记录日志。

建议:如果日志很重要(用于审计、安全等),推荐使用 persistent

Storage=persistent

2. 日志保留时间:MaxRetentionSec=

指定日志的最大保留时间。日志超过此时间后会被自动删除。时间可以用秒(s)、分(m)、小时(h)、天(d)表示。

建议:根据存储空间和调试需求设置。例如保留30天:

MaxRetentionSec=30d

3. 日志最大大小:SystemMaxUse=SystemKeepFree=

  • SystemMaxUse=:设置 /var/log/journal/ 下日志文件夹的最大大小。当日志超过此大小时,最旧的日志将被删除。可以用字节、KB、MB、GB 表示。
  • SystemKeepFree=:设置系统应保留的最小可用空间。当剩余空间低于此值时,日志会被删除。

建议:根据存储情况设置。例如,最多使用 500MB 空间,至少保留 100MB 可用空间:

SystemMaxUse=500M
SystemKeepFree=100M

4. 每个日志文件的大小限制:MaxFileSize=

设置每个单个日志文件的最大大小。超过此大小时会创建新日志文件。

建议:例如将每个日志文件限制为 100MB:

MaxFileSize=100M

5. 压缩日志:Compress=

启用或禁用日志文件的压缩。启用压缩可以减少存储空间占用。

建议:如果需要节省空间,启用压缩:

Compress=yes

6. 避免写入不必要的日志:ForwardToSyslog=ForwardToKMsg=

  • ForwardToSyslog=:是否将日志转发到传统的 syslog 守护进程(如 rsyslog)。
  • ForwardToKMsg=:是否将日志转发到内核消息缓冲区。

建议:如果没有使用外部 syslog 工具,或不希望日志出现在 dmesg 中,可以关闭这两个选项:

ForwardToSyslog=no
ForwardToKMsg=no

7. 消息等级过滤:MaxLevelStore=MaxLevelSyslog=

  • MaxLevelStore=:控制存储的最大日志等级,等级顺序为:emerg(紧急)、alertcriterr(错误)、warningnoticeinfodebug
  • MaxLevelSyslog=:控制发送到 syslog 的最大日志等级。

建议:如果只关心较高等级的日志,可以设置为 warning 或更高:

MaxLevelStore=warning

完整示例:

[Journal]
Storage=persistent
MaxRetentionSec=30d
SystemMaxUse=500M
SystemKeepFree=100M
MaxFileSize=100M
Compress=yes
ForwardToSyslog=no
ForwardToKMsg=no
MaxLevelStore=warning

小结:

  • 如果你需要长期保留日志并进行调试,设置 Storage=persistent 和适当的大小限制。
  • 如果存储空间有限,可以启用日志压缩并限制日志的保留时间和大小。
  • 如果不需要过多的日志详细信息,可以通过 MaxLevelStore 控制日志等级。