Provided by: manpages-zh_1.6.3.2-1_all bug

NAME

       journald.conf, journald.conf.d - 日志服务配置文件

SYNOPSIS

       /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) 的行为。

配置目录及其优先级

       默认设置是在编译期间确定的, 所以仅在确实需要修改默认设置的情况下, 才需要使用配置文件。位
       于 /etc/systemd/ 目录中的初始配置文件, 仅包含了展示选项默认值的注释, 目的在于方便系统管
       理员查看和直接修改。

       如果软件包想要自定义某些默认设置, 那么必须将自定义的配置文件安装到
       /usr/lib/systemd/*.conf.d/ 目录中。 /etc/ 目录仅供系统管理员使用。 系统管理员可以利用下面
       的逻辑来覆盖默认设置: 主配置文件最先被读取, 优先级也最低。 所有 *.conf.d/ 中的配置文件
       都会覆盖主配置文件中的设置。 所有 *.conf.d/ 中的配置文件(无论位于哪个目录中), 统一按照文
       件名的字典顺序处理。 如果在多个配置文件中设置了同一个选项, 那么仅以文件名最靠后(字典顺
       序)的那一个为准。 为了便于排序, 建议给所有 *.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"表示: 压缩存储大于特定阈值的对象。

       Seal=
           默认值"yes"表示:如果存在一个"sealing key"(由 journalctl(1) 的 --setup-keys 命令创
           建), 那么就为所有持久保存的日志文件启用 FSS(Seekable Sequential Key Generators[1])保
           护, 以避免日志文件被恶意或无意的修改。

       SplitMode=
           设置如何按用户分割日志文件,以实现不同的访问控制策略(日志守护进程会确保每个用户都能读
           取自己的日志文件)。 注意,仅分割持久保存的日志(/var/log/journal),永不分割内存中的日
           志(/run/log/journal)。 可以使用的分割策略如下: "uid" 表示每个用户都有自己专属的日志文
           件(无论该用户是否拥有登录会话), 但系统用户的日志依然记录到系统日志中。这是默认值。

           "none" 表示不对日志文件进行分割,而是将所有日志都记录到系统日志中。 这意味着非特权用户
           根本无法读取属于自己的日志信息。

       RateLimitIntervalSec=, RateLimitBurst=
           用于限制日志的生成速度(设为零表示不作限制)。 RateLimitIntervalSec= 用于设置一个时间段
           长度,默认值是30秒。 RateLimitBurst= 用于设置一个正整数,表示消息条数,默认值
           是1000条。 表示在 RateLimitIntervalSec= 时间段内, 每个服务最多允许产生
           RateLimitBurst= 数量(条数)的日志。 在同一个时间段内,超出数量限制的日志将被丢弃,直到
           下一个时间段才能再次开始记录。 对于所有被丢弃的日志消息,仅用一条类似"xxx条消息被丢
           弃"的消息来代替。 这个限制是针对每个服务的限制,一个服务超限并不会影响到另一个服务的日
           志记录。 RateLimitIntervalSec= 可以使用下面的时间单位:"ms", "s", "min", "h", "d"

       SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, SystemMaxFiles=, RuntimeMaxUse=,
       RuntimeKeepFree=, RuntimeMaxFileSize=, RuntimeMaxFiles=
           限制日志文件的大小上限。 以 "System" 开头的选项用于限制磁盘使用量, 也就是
           /var/log/journal 的使用量。 以 "Runtime" 开头的选项用于限制内存使用量, 也就是
           /run/log/journal 的使用量。 以 "System" 开头的选项仅在 /var/log/journal 目录确实存在且
           可写时才有意义。 但以 "Runtime" 开头的选项永远有意义。 也就是说, 在系统启动早期 /var
           尚未挂载时、 或者系统管理员禁止在磁盘上存储日志的时候, 仅有 "Runtime" 开头的选项有意
           义。 journalctlsystemd-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
           只会立即暂停日志记录, 但不会删除已经存在的日志文件。

           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=
           日志文件的最大保留期限。 当日志文件的最后修改时间超过此期限后将被删除。 默认值零表示不
           使用基于时间的日志删除策略。 通常并不需要使用基于时间的日志删除策略,因为由
           SystemMaxUse=RuntimeMaxUse= 控制的基于文件大小的日志滚动策略 已经可以确保日志文件
           的大小不会超标。 可以使用 "year", "month", "week", "day", "h", "m" 时间后缀, 若不使用
           后缀则表示以秒为单位。

       SyncIntervalSec=
           向磁盘刷写日志文件的时间间隔,默认值是五分钟。 刷写之后,日志文件将会处于离
           线(OFFLINE)状态。 注意,当接收到 CRIT, ALERT, EMERG 级别的日志消息后, 将会无条件的立
           即刷写日志文件。 因此该设置仅对 ERR, WARNING, NOTICE, INFO, DEBUG 级别的日志消息有意
           义。

       ForwardToSyslog=, ForwardToKMsg=, ForwardToConsole=, ForwardToWall=
           ForwardToSyslog= 表示是否将接收到的日志消息转发给传统的 syslog[2] 守护进程,默认值
           为"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[2] 守护进程的最高日志等级,默认值为"debug"; MaxLevelKMsg= 设
           置转发给内核日志缓冲区(kmsg)的最高日志等级,默认值为"notice"; MaxLevelConsole= 设置转
           发给系统控制台的最高日志等级,默认值为"info"; MaxLevelWall= 设置作为警告信息发送给所
           有已登录用户的最高日志等级,默认值为"emerg"; 这些选项既可以设为日志等级的名称, 也可
           以设为日志等级对应的数字: "emerg"(0), "alert"(1), "crit"(2), "err"(3), "warning"(4),
           "notice"(5), "info"(6), "debug"(7) 。 所有高于设定等级的日志消息都将被直接丢弃, 仅保
           存/转发小于等于设定等级的日志消息。

       TTYPath=
           指定 ForwardToConsole=yes 时所使用的控制台TTY, 默认值是 /dev/console

日志转发

       有两种不同的日志转发方法: (1)通过套接字文件(/run/systemd/journal/syslog) 可以将收集到的日
       志消息 立即转发给套接字的监听进程(传统的 syslog[2] 守护进程)。 此方法受 ForwardToSyslog=
       指令的控制。 (2)日志接收进程作为客户端运行,就像 journalctl(1) 一样读取日志文件。 因此,此
       方法在 Storage=none 时无效。 此方法不能实时读取日志消息, 但是可以读取先前保存的日志消
       息(例如在系统启动完成之后读取系统启动早期的日志消息)。 此方法还可以读取到完整的日志元数
       据。 此方法一般无法读取当前最新的日志消息, 只能读取已经被记录到文件系统上的日志消息。 注
       意,syslog[2] 守护进程通常使用此方法(而不是前一种方法), 因此 Storage= 选项(而不是
       ForwardToSyslog= 选项) 不应该设为"none"。

参见

       systemd(1), systemd-journald.service(8), journalctl(1), systemd.journal-fields(7),
       systemd-system.conf(5)

NOTES

        1. Seekable Sequential Key Generators
           https://eprint.iacr.org/2013/397

        2. syslog
           //linux/sysklogd.html

       本页面中文版由中文 man 手册页计划提供。

       翻译人员:金步国
       金步国作品集:http://www.jinbuguo.com
       中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh