- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
journald.conf 中文手册
名称
journald.conf, journald.conf.d — 日志服务配置文件
大纲
/etc/systemd/journald.conf
/etc/systemd/journald.conf.d/*.conf
/run/systemd/journald.conf.d/*.conf
/usr/lib/systemd/journald.conf.d/*.conf
描述
这些文件用于配置系统日志服务systemd-journald.service(8)的行为。参见systemd.syntax(5)以了解通用配置语法。
配置目录及其优先级
默认设置是在编译期间确定的,所以仅在确实需要修改默认设置的情况下,才需要使用配置文件。位于/etc/systemd/
目录中的初始配置文件,仅包含了展示选项默认值的注释,目的在于方便系统管理员查看和直接修改。
如果软件包想要自定义某些默认设置,那么必须将自定义的配置文件安装到/usr/lib/systemd/*.conf.d/
目录中。/etc/
目录仅供系统管理员使用。系统管理员可以利用下面的逻辑来覆盖默认设置:主配置文件最先被读取,优先级也最低。所有 *.conf.d/
中的配置文件都会覆盖主配置文件中的设置。所有 *.conf.d/
中的配置文件(无论位于哪个目录中),统一按照文件名的字典顺序处理。当多个配置文件都设置了同一个选项的时候:(1)如果该选项仅接受一个单一值,那么仅以文件名最靠后(字典顺序)的那一个为准;(2)如果该选项可接受一个值列表,那么将会按照文件名的字典顺序将所有值列表拼接起来。为了便于排序,建议给所有 *.conf.d/
中的配置文件都加上两位十进制数字的文件名前缀。
如果系统管理员想要屏蔽 /usr/lib/
目录中的某个配置文件,那么最佳做法是在 /etc/
目录中创建一个指向 /dev/null
的同名符号链接,即可彻底屏蔽 /usr/lib/
目录中的同名文件。
选项
所有选项都位于"[Journal]
" 小节:
Storage=
在哪里存储日志文件: "
volatile
" 表示仅保存在内存中,也就是仅保存在/run/log/journal
目录中(将会被自动按需创建)。 "persistent
" 表示优先保存在磁盘上,也就优先保存在/var/log/journal
目录中(将会被自动按需创建),但若失败(例如在系统启动早期"/var"尚未挂载),则转而保存在/run/log/journal
目录中(将会被自动按需创建)。 "auto
"(默认值) 与 "persistent
" 类似,但不自动创建/var/log/journal
目录,因此可以根据该目录的存在与否决定日志的保存位置。 "none
" 表示不保存任何日志(直接丢弃所有收集到的日志),但日志转发(见下文)不受影响。 默认值是 "auto
"Compress=
默认值"yes"表示 压缩存储大于特定阈值(默认为512字节)的对象。也可以直接设置一个 字节值(可以带有 K, M, G 后缀) 表示的阈值,表示压缩存储 大于指定阈值的对象。
Seal=
默认值"yes"表示: 如果存在一个"sealing key"(由 journalctl(1) 的
--setup-keys
命令创建),那么就为所有持久保存的日志文件启用 FSS(Seekable Sequential Key Generators)保护,以避免日志文件 被恶意或无意的修改。SplitMode=
设置是否按照每个用户分割日志文件,以实现对日志的访问控制(日志守护进程会确保每个用户都能读取自己的日志文件)。可以使用的分割策略如下: "
uid
" 表示每个用户都有自己专属的日志文件(无论该用户是否拥有登录会话),但系统用户的日志依然记录到系统日志中。这是默认值。"none
" 表示不对日志文件按不同用户进行分割,而是将所有日志都记录到系统日志中。这意味着非特权用户根本无法读取属于自己的日志信息。注意,仅分割持久保存的日志(/var/log/journal
),永不分割内存中的日志(/run/log/journal
)。RateLimitIntervalSec=
,RateLimitBurst=
限制日志的生成速率 (设为零表示不作限制)。
RateLimitIntervalSec=
用于设置一个时间段长度,默认值是30秒。RateLimitBurst=
用于设置一个正整数,表示消息条数,默认值是10000条。表示在RateLimitIntervalSec=
时间段内,每个服务最多允许产生RateLimitBurst=
数量(条数)的日志。在同一个时间段内,超出数量限制的日志将被丢弃,直到下一个时间段才能再次开始记录。对于所有被丢弃的日志消息,仅用一条类似"xxx条消息被丢弃"的消息来代替。这个限制是针对每个服务的限制,一个服务超限并不会影响到另一个服务的日志记录。RateLimitIntervalSec=
可以使用下面的时间单位: "ms
", "s
", "min
", "h
", "d
"如果一个服务已经通过
LogRateLimitIntervalSec=
和/或LogRateLimitBurst=
(参见 systemd.exec(5) 手册) 限制了自身的日志生成速率,那么将会覆盖此处的设置。SystemMaxUse=
,SystemKeepFree=
,SystemMaxFileSize=
,SystemMaxFiles=
,RuntimeMaxUse=
,RuntimeKeepFree=
,RuntimeMaxFileSize=
,RuntimeMaxFiles=
限制日志文件的 大小上限。以 "
System
" 开头的选项用于限制磁盘使用量,也就是/var/log/journal
的使用量。以 "Runtime
" 开头的选项用于限制内存使用量,也就是/run/log/journal
的使用量。以 "System
" 开头的选项仅在/var/log/journal
目录确实存在且可写时才有意义。但以 "Runtime
" 开头的选项永远有意义。也就是说,在系统启动早期/var
尚未挂载时、 或者系统管理员禁止在磁盘上存储日志的时候,仅有 "Runtime
" 开头的选项有意义。journalctl 与 systemd-journald 工具会忽略日志目录中 所有后缀名不等于 ".journal
" 或 ".journal~
" 的文件。换句话说,日志目录中不应该存在后缀名不等于 ".journal
" 或 ".journal~
" 的文件,因为这些文件 永远不会被清理。SystemMaxUse=
与RuntimeMaxUse=
限制全部日志文件加在一起最多可以占用多少空间。SystemKeepFree=
与RuntimeKeepFree=
表示除日志文件之外,至少保留多少空间给其他用途。systemd-journald 会同时考虑这两个因素,并且尽量限制日志文件的总大小,以同时满足这两个限制。SystemMaxUse=
与RuntimeMaxUse=
的默认值是10%空间与4G空间两者中的较小者;SystemKeepFree=
与RuntimeKeepFree=
的默认值是15%空间与4G空间两者中的较大者; 如果在 systemd-journald 启动时,文件系统即将被填满并且已经超越了SystemKeepFree=
或RuntimeKeepFree=
的限制,那么日志记录将被暂停。也就是说,如果在创建日志文件时,文件系统有充足的空闲空间,但是后来文件系统被其他非日志文件过多占用,那么 systemd-journald 只会立即暂停日志记录,但不会删除已经存在的日志文件。注意,只会删除已归档的日志文件以释放空间。也就是说,即使在完成日志清理之后,日志所占用的空间仍然可能大于SystemMaxUse=
或RuntimeMaxUse=
的限制。SystemMaxFileSize=
与RuntimeMaxFileSize=
限制单个日志文件的最大体积,到达此限制后日志文件将会自动滚动。默认值是对应的SystemMaxUse=
与RuntimeMaxUse=
值的1/8 ,这也意味着日志滚动 默认保留7个历史文件。日志大小 可以使用以1024为基数的 K, M, G, T, P, E 后缀,分别对应于 1024, 1024², … 字节。
SystemMaxFiles=
与RuntimeMaxFiles=
限制最多允许同时存在多少个日志文件,超出此限制后,最老的日志文件将被删除,而当前的活动日志文件 则不受影响。默认值为100个。MaxFileSec=
日志滚动的时间间隔。通常 并不需要使用基于时间的日志滚动策略,因为由
SystemMaxFileSize=
与RuntimeMaxFileSize=
控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。默认值是一个月,设为零表示禁用基于时间的日志滚动策略。可以使用 "year
", "month
", "week
", "day
", "h
", "m
" 时间后缀,若不使用后缀则表示以秒为单位。MaxRetentionSec=
日志文件的最大保留期限。当日志文件的最后修改时间(mtime)与当前时间之差,大于此处设置的值时,日志文件将会被删除。默认值零表示不使用基于时间的日志删除策略。通常并不需要使用基于时间的日志删除策略,因为由
SystemMaxUse=
与RuntimeMaxUse=
控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。可以使用 "year
", "month
", "week
", "day
", "h
", "m
" 时间后缀,若不使用后缀则表示以秒为单位。SyncIntervalSec=
向磁盘刷写日志文件的时间间隔,默认值是五分钟。刷写之后,日志文件将会处于离线(OFFLINE)状态。注意,当接收到 CRIT, ALERT, EMERG 级别的日志消息后,将会无条件的立即刷写日志文件。因此该设置仅对 ERR, WARNING, NOTICE, INFO, DEBUG 级别的日志消息有意义。
ForwardToSyslog=
,ForwardToKMsg=
,ForwardToConsole=
,ForwardToWall=
ForwardToSyslog=
表示是否将接收到的日志消息转发给传统的 syslog 守护进程,默认值为"no"。如果设为"yes",但是没有任何进程监听对应的套接字,那么这种转发是无意义的。此选项可以被内核引导选项 "systemd.journald.forward_to_syslog
" 覆盖。ForwardToKMsg=
表示是否将接收到的日志消息转发给内核日志缓冲区(kmsg),默认值为"no"。此选项可以被内核引导选项 "systemd.journald.forward_to_kmsg
" 覆盖。ForwardToConsole=
表示是否将接收到的日志消息转发给系统控制台,默认值为"no"。如果设为"yes",那么可以通过下面的TTYPath=
指定转发目标。此选项可以被内核引导选项 "systemd.journald.forward_to_console
" 覆盖。ForwardToWall=
表示是否将接收到的日志消息作为警告信息发送给所有已登录用户,默认值为"yes"。此选项可以被内核引导选项 "systemd.journald.forward_to_wall
" 覆盖。MaxLevelStore=
,MaxLevelSyslog=
,MaxLevelKMsg=
,MaxLevelConsole=
,MaxLevelWall=
MaxLevelStore=
设置记录到日志文件中的最高日志等级,默认值为"debug
";MaxLevelSyslog=
设置转发给传统的 syslog 守护进程的最高日志等级,默认值为"debug
";MaxLevelKMsg=
设置转发给内核日志缓冲区(kmsg)的最高日志等级,默认值为"notice
";MaxLevelConsole=
设置转发给系统控制台的最高日志等级,默认值为"info
";MaxLevelWall=
设置作为警告信息发送给所有已登录用户的最高日志等级,默认值为"emerg
"; 这些选项既可以设为日志等级的名称,也可以设为日志等级对应的数字: "emerg
"(0), "alert
"(1), "crit
"(2), "err
"(3), "warning
"(4), "notice
"(5), "info
"(6), "debug
"(7) 。所有高于设定等级的日志消息都将被直接丢弃,仅保存/转发小于等于设定等级的日志消息。上述设置可以被如下内核引导选项覆盖: "systemd.journald.max_level_store=
", "systemd.journald.max_level_syslog=
", "systemd.journald.max_level_kmsg=
", "systemd.journald.max_level_console=
", "systemd.journald.max_level_wall=
"ReadKMsg=
是否收集内核日志。默认值 yes 表示从
/dev/kmsg
中读取内核产生的日志消息。TTYPath=
指定
ForwardToConsole=yes
时所使用的控制台TTY,默认值是/dev/console
LineMax=
在将日志流转化为日志记录时,每条日志记录最大允许的长度(字节)。如果将单元的标准输出(STDOUT)/标准错误(STDERR)通过流套接字连接到日志中,那么将会以换行符("
\n
", ASCII 10)与NUL字符("\0
", ASCII 0)作为分割符,把日志流切分成一条条独立的日志记录。如果超过此处设置的长度之后仍然没有遇到分割符,那么将会自动插入一个分割符,以强制将单行超长日志截断为多行。此选项的值越大,每个日志流客户端日志守护进程占用的内存也越大(最大值等于此选项的值)。另外,此选项的值太大也会造成与传统日志传输协议的不兼容(太长的日志无法封装在单个AF_UNIX
或AF_INET
报文内)。此选项的值以字节为单位,同时也可以在数字的末尾加上 K, M, G, T 后缀(以1024为基准)。默认值 48K 是一个足够大并且也能保持与传统日志传输协议兼容的值。注意,不能设为小于 79 的值(将被自动提升到79)。
日志转发
有两种不同的日志转发方法:(1)通过套接字文件(/run/systemd/journal/syslog
)可以将收集到的日志消息立即转发给套接字的监听进程(传统的 syslog 守护进程)。此方法受 ForwardToSyslog=
指令的控制。(2)日志接收进程作为客户端运行,就像journalctl(1)一样读取日志文件。因此,此方法在 Storage=none
时无效。此方法不能实时读取日志消息,但是可以读取先前保存的日志消息(例如在系统启动完成之后读取系统启动早期的日志消息)。此方法还可以读取到完整的日志元数据。此方法一般无法读取当前最新的日志消息,只能读取已经被记录到文件系统上的日志消息。注意,syslog 守护进程通常使用此方法(而不是前一种方法),因此 Storage=
选项(而不是 ForwardToSyslog=
选项)不应该设为"none"。
参见
systemd(1), systemd-journald.service(8), journalctl(1), systemd.journal-fields(7), systemd-system.conf(5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论