GNU/Linux 基础 — 日志管理

基本概述

在本章中,您将学习如何管理操作系统中的日志。

Q:什么是日志?

日志(Log):记录自操作系统启动以来发生的所有事件和消息,包括引导日志、内核初始化日志、systemd 初始化日志和应用程序启动或运行日志。日志是操作系统最重要的功能之一,管理员可以查询日志来解决现有或即将出现的问题。

在 RHEL 8.x 和 RHEL 9.x 中,日志收集主要通过以下两个程序完成:

  • rsyslog – 一种快速收集和处理日志的程序。它是 syslog 的升级版本。这是它的官网
  • journaldsystemd 的组件之一。

rsyslog

在 Rocky Linux 8.x 或 9.x 中,/var/log/ 目录中有各种日志文件。让我们了解一下:

  • /var/log/boot.log – 记录操作系统引导期间发生的事件。文件内容为纯文本。
  • /var/log/btmp – 记录登录错误的日志。要查看此二进制文件,需要使用 lastb 命令。
  • /var/log/cron – 记录与系统计划任务相关的日志。文件内容为纯文本。
  • /var/log/dmegs – 记录启动后内核自检的日志。文件内容为纯文本。也可以使用 dmegs 命令进行查看。
  • /var/log/lastlog – 记录操作系统中所有用户的上次登录时间。要查看此二进制文件,需要使用 lastlog 命令。
  • /var/log/maillog – 记录电子邮件相关日志。
  • /var/log/messages – 记录操作系统核心的系统级日志文件。文件内容为纯文本。当操作系统中发生错误时,应首先查看此日志文件。
  • /var/log/secure – 记录与用户身份相关的日志,如用户登录、su 切换、添加新用户、更改用户密码等。
  • /var/log/wtmp – 记录用户的登录、注销以及操作系统的启动、关闭及重启事件。查看该二进制文件需使用 last 命令。

对于纯文本文件,格式通常为:

  1. 事件发生的时间
  2. 事件发生在哪台机器上
  3. 生成事件的服务或程序的名称
  4. 事件的具体描述和解释
  5. 用户和终端信息
  6. 一些关键字提示(如 error、fail、info 等)

不同用途的日志格式差异很大,因此上面的格式描述不能代表所有的日志。

如果操作系统中缺少 rsyslog,请运行以下命令:

Shell > dnf install -y rsyslog

配置文件

  • /etc/rsyslog.conf – 主配置文件
  • /etc/rsyslog.d/ – 附加配置文件的存储目录

/etc/rsyslog.conf 主要由几个部分组成:

  1. 装载模块
  2. 全局指令
  3. 规则 – 作者将详细说明这一部分。

经过几十年的发展,rsyslog 目前支持三种不同的配置格式:

  1. basic (sysklogd) – 这种格式适用于在单行中表示基本配置。

    mail.info /var/log/mail.log
    mail.err @@server.example.net
  2. advanced (RainerScript) – 高度灵活和高度准确的配置格式。

    mail.err action(type="omfwd" protocol="tcp" queue.type="linkedList")
  3. obsolete legacy (legacy) – 此格式已被弃用。您不应该继续使用它。

规则

此部分的默认内容如下:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

authpriv.*                                              /var/log/secure

mail.*                                                  -/var/log/maillog

cron.*                                                  /var/log/cron

*.emerg                                                 :omusrmsg:*

uucp,news.crit                                          /var/log/spooler

local7.*                                                /var/log/boot.log

每个规则行由两部分组成:

  1. 选择器(selector)字段 – 由设施(Facility)和优先级(Priority)组成
  2. 动作(action)字段 – 您希望如何处理这些匹配的消息

字段之间用一个或多个空格隔开。

设施 说明
auth 记录与系统安全、用户身份验证和权限管理相关的事件
authpriv 记录更敏感的安全事件(如 sudo 操作)。 "priv" 等同于 private
cron 记录与计划任务相关的事件
daemon 记录系统守护程序的运行日志,包括服务启动、运行状态和错误信息
ftp 记录与 FTP 服务相关的操作日志(如 vsftpdproftpd),包括连接、文件传输和错误信息
kern 记录 Linux 内核运行时生成的日志,包括硬件驱动程序、内核模块和系统异常等核心事件
lpr 记录打印服务的运行日志,包括打印任务提交、队列管理和错误信息
mail 记录邮件服务(如 Postfix 和 Sendmail)的日志信息,包括邮件发送、接收、队列处理和错误事件
news 很少使用
security auth 相同
syslog 记录 syslog 服务生成的日志
user 记录用户空间应用程序或用户生成的日志信息。
uucp 记录 Unix to Unix Copy Protocol(UUCP)相关的操作日志,包括文件传输、远程命令执行和其他场景
local0 保留
local1 保留
…. 保留
local7 保留

* 表示所有设施。在单行配置中,还可以使用 ,; 组合这些设施。, 表示逻辑或;; 表示规则分隔符。

auth,authpriv.*  /var/log/auth.log

# 等同于

auth.*   /var/log/auth.log
authpriv.*  /var/log/auth.log
kern.err;mail.alert  /var/log/critical.log
连接符 说明
. 记录优先级高于关键字的日志。 例如,cron.info 表示它会在 cron 中记录日志优先级‌高于‌ info 的信息
.= 仅记录对应的关键字优先级。例如,*.=emerg 表示在所有应用程序中记录优先级等于 emerg 的日志
.! 它表示排除或不等于

优先级从低到高排序:

名称 说明
debug 一般调试信息
info 基本通知信息
notice 具有一定重要性的一般信息
warning 警告消息,此类信息不能影响操作系统或服务的正常操作
err 错误消息,可能会影响操作系统和服务的正常操作
crit err 更严重的临界状态
alert crit 更严重的警报状态,系统管理员需要立即处理
emerg 操作系统通常不可用的紧急状态

* 表示所有日志优先级。

日志优先级越低,记录的内容越详细,严重性越低。日志优先级越高,记录的内容越少,问题越严重。

"action" 是指保存或发送日志的位置:

  • /var/log/secure – 将日志保存到本地文件
  • @192.168.100.20:22 – 远程机器
  • :omusrmsg:root,frank,jack – 指定在线用户列表。* 表示所有用户。"omusrmsg" 是指 "output module for user messages"("用户消息输出模块")。
  • /dev/tty12 – 特定终端设备
  • - – 写入到文件时禁用缓冲机制

日志轮替

日志轮替 – 为了解决日志文件的持续增长导致的存储占用和性能下降的问题,需要进行日志轮替。具体功能有:

  • 轮替 – 根据特定的规则(如时间或文件大小)自动归档当前日志文件,并创建一个新的空日志文件进行记录,以防止日志文件过大。
  • 压缩 – 压缩归档的旧日志以节省磁盘空间。
  • 删除 – ‌根据相关策略保留符合条件的日志文件,并删除已过期的旧日志文件。‌

我们通常使用 logrotate 工具来对日志进行轮替。

轮替期间日志文件的命名规则:

  • dateext 参数 – 使用日期作为日志轮替后的文件后缀名。例如,当第一次日志轮替发生时,旧的日志文件 "secure" 将更改为 "secure-20250424",而 logrotate 将创建一个新的 "secure"
  • dateetx 参数 – 使用日志轮替后的轮替数作为文件后缀名。例如,当第一次日志轮换发生时,旧的日志文件 "secure" 将更改为 "secure.1" 且 logrotate 将创建一个新的 "secure"

/etc/logrotate.conf 和 /etc/logrotate.d/

Shell > grep -v -E "^#|^$" /etc/logrotate.conf
weekly
rotate 4
create
dateext
include /etc/logrotate.d

Shell > ls -l /etc/logrotate.d/
-rw-r--r--  1 root root 130 Feb  7  2023 btmp
-rw-r--r--. 1 root root 160 Dec  5  2023 chrony
-rw-r--r--. 1 root root  88 Apr 12  2021 dnf
-rw-r--r--  1 root root  93 Mar 11 17:29 firewalld
-rw-r--r--. 1 root root 162 Apr 16 19:49 kvm_stat
-rw-r--r--  1 root root 289 Dec 18 01:38 sssd
-rw-r--r--  1 root root 226 Nov  5 15:43 syslog
-rw-r--r--  1 root root 145 Feb 19  2018 wtmp

/etc/logrotate.conf – 日志轮替的全局配置文件。如果配置项或参数重叠,则以最后读取到的配置项或参数为准。读取顺序:

  1. 从上到下读取 /etc/logrotate.conf 文件的内容
  2. 使用 "include" 关键字包含的文件

常见的配置项目或参数为:

说明
daily 定义以天为单位的日志轮替周期
weekly 定义以周为单位的日志轮替周期
monthly 定义以月为单位的日志轮替周期
rotate <NUMBER> 日志轮替后保存的文件数
compress 在日志轮替后压缩旧日志
create <MODE> <OWNER> <GROUP> 日志轮替后,定义新日志文件的权限、所有者以及所属组
mail <E-MAIL ADDRESS> 日志轮替后,将输出的内容以邮件的方式发送到指定的邮箱
missingok 如果日志文件不存在,则忽略日志的警告信息
notifempty 如果日志文件的内容为空,则不会发生日志轮替
minsize <SIZE> 日志轮替的文件大小条件,即日志轮替仅在满足此条件时发生
dateext 使用日期作为日志轮替的文件后缀名

如果从存储库安装软件包,则应用程序的日志轮替由软件包维护人员定义,使用者通常不需要修改日志轮替规则。如果通过编译源代码来安装应用程序,则需要考虑并手动配置日志轮替。

logrotate 命令

用法为 logrotate [OPTION...] <configfile>

  • -v – 显示日志轮替的过程
  • -f – 无论是否满足日志轮替条件,都会强制执行一次日志轮替
Shell > logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file btmp
reading config file chrony
reading config file dnf
reading config file firewalld
reading config file kvm_stat
reading config file sssd
reading config file syslog
reading config file wtmp
Reading state from file: /var/lib/logrotate/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state

Handling 8 logs

rotating pattern: /var/log/btmp  monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-04 12:08
  log does not need rotating (log has been rotated at 2025-4-4 12:8, that is not month ago yet)

rotating pattern: /var/log/chrony/*.log  weekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/chrony/*.log
  log /var/log/chrony/*.log does not exist -- skipping
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/hawkey.log  weekly (4 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/hawkey.log
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)

rotating pattern: /var/log/firewalld  weekly (4 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/firewalld
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-20 13:00
  log does not need rotating ('minsize' directive is used and the log size is smaller than the minsize value)

rotating pattern: /var/log/kvm_stat.csv  10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/kvm_stat.csv
  log /var/log/kvm_stat.csv does not exist -- skipping

rotating pattern: /var/log/sssd/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/sssd/sssd_implicit_files.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd_kcm.log
  Now: 2025-04-24 12:35
  Last rotated at 2025-02-08 13:49
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd_nss.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
 weekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/cron
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/maillog
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/messages
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/secure
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/spooler
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/wtmp  monthly (1 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/wtmp
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-20 13:00
  log does not need rotating ('minsize' directive is used and the log size is smaller than the minsize value)

journald

systemd 不仅是用于初始化的应用程序,而且还接管了许多系统组件。在 systemd 中使用 journald 接管日志的内容。

journaldsystemd 中接管日志的守护程序。您需要使用 journalctl 命令来读取日志。

请注意,journald 默认不启用日志持久化,这意味着它只保留和记录自启动以来的所有日志。操作系统重新启动后,会删除历史日志。默认情况下,所有临时保存的日志文件都位于 /run/log/journal/ 目录中。

Shell > tree -hugp /run/log/journal/638c6d5d2b674f77be56174469099106/
/run/log/journal/638c6d5d2b674f77be56174469099106/
└── [-rw-r----- root     systemd-journal  8.0M]  system.journal

0 directories, 1 file

该临时文件是二进制文件,你必须使用 journalctl 命令来解析它。

journald 能记录:

  • 引导日志
  • 内核日志
  • 应用程序日志

journald 根据 priority(优先级)facility(设施) 来标记日志:

  • priority – 标记日志的重要性。与 rsyslog 类似,优先级越高,记录的信息越少,问题越严重;优先级越低,记录的信息越多,问题越轻。按优先级从低到高排序:

    数字代码 优先级 关键字
    7 Debug debug
    6 Informational info
    5 Notice notice
    4 Warning warning
    3 Error err
    2 Critical crit
    1 Alert alert
    0 Emergency emerg
  • facility – 如下表所示:

    数字代码 设施
    0 kern
    1 user
    2 mail
    3 daemon
    4 auth
    5 syslog
    6 lpr
    7 news
    8 uucp
    9
    10 authpriv
    11 ftp
    12
    13
    14
    15 cron
    16 local0
    17 local1
    18 local2
    19 local3
    20 local4
    21 local5
    22 local6
    23 local7

journalctl 命令

用法为 journalctl [OPTIONS...] [MATCHES...]

以下是无序列表中的选项列表:

  • -u – 指定 ‘unit’, 您可以在单行命令中多次使用该命令。例如 journalctl -u crond.service -u sshd.service
  • --system – 显示来自系统服务和内核的消息
  • --user – 显示来自当前用户的服务的消息
  • -k – 显示当前引导的内核消息日志
  • --since=DATA-S – 显示不早于指定日期的条目。日期格式为 "YYYY-MM-DD HH:MM:SS"。例如 journalctl --since="2025-04-24 14:00:30
  • --until=DATA-U – 显示不晚于指定日期的条目。日期格式为 "YYYY-MM-DD HH:MM:SS"。例如 journalctl --since="2025-04-01 05:00:10" --until="2025-04-05 18:00:30"
  • --list-boots – 显示有关记录的引导的简要信息
  • -n N – 控制输出的条目数。如果未指定 "N",则默认值为 10
  • -p PRIORITY – 指定优先级或优先级范围。如果指定单个日志优先级关键字,则将显示此优先级和高于此优先级的条目。例如 journalctl -p 3journalctl -p err 等同于 journalctl -p 0..3journalctl -p emerg..err
  • -b – 查询从当前引导 ID 开始的日志。不要将引导 ID 与内核引导的索引号混淆。
  • -f – 动态查询日志,类似于 tail -f 命令
  • -x – 添加可用的消息解释
  • -e – 跳转到日志的结束页,通常与 -x 选项一起使用
  • -r – 反向日志
  • --disk-usage – 显示日志文件占用的磁盘空间
  • --rotate – 请求立即轮替日志文件
  • --vacuum-size=BYTES – 将日志文件减少到指定的大小。逐步删除旧的日志内容,直到满足指定的文件大小。支持的大小后缀有 K、M、G、T
  • --vacuum-time=TIME – 通过指定时间点删除旧的日志记录,即删除该时间点之前的日志记录。支持的时间后缀有 s、m、h、days、months、weeks、years
  • --vacuum-files=INT – 指示要保留的日志文件数
  • -N – 列出当前使用的所有字段名。用户可以使用 "FIELD=VALUE" 方法来匹配相关内容。例如 journalctl _SYSTEMD_UNIT=sshd.service.
  • -g-grep=PATTERN– 通过 PATTERN 匹配日志内容,支持正则表达式。默认情况下,如果 PATTERN 全部为小写,则匹配的日志内容不区分大小写。可以通过 --case-sensitive 选项调整区分大小写
  • --case-sensitive=[BOOLEAN] – 调整是否区分大小写。
  • -o--output=STRING – 变更 journalctl 的输出模式。 STRING 可以是 short、short-precise、short-iso、short-iso-precise、short-full、short-monotonic、short-unix、verbose、export、json、json-pretty、json-sse、cat 和 with-unit
  • -q--quiet – 安静输出
  • --sync – 将未写入的日志消息同步到磁盘

/etc/systemd/journald.conf

Shell > cat /etc/systemd/journald.conf
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

与其他 systemd 组件的配置文件一样,使用 "[ ]"包含标题,标题下面则是特定的键值对。键值对中 等号的两侧都没有空格。有关完整的配置手册页面,请参阅 man 5 journald.conf

  • Storage= – 控制 journald 数据存储的位置。默认值为 auto。

    • volatile – 将日志数据存储在内存中,即位于 /run/log/journal/ 目录中的临时文件。
    • persistent – 将日志数据存储在 /var/log/journal/ 目录中。您需要手动创建该目录。如果此目录不可写,则将日志数据将写入到 /run/log/journal/ 目录中
    • auto – 类似于 persistent
    • none – 不保存任何日志,但不会影响转发到其他 "target" 的日志
  • Compress= – 是否启用压缩功能。默认值为 yes。

  • Seal= – 是否使用 FSS(Forward Secure Sealing) 来保护日志条目免受恶意篡改。默认值为 yes。

  • SplitMode= – 定义分割日志文件的方式。必须先满足前提条件(Storage=persistent),然后才能生效。默认值为 uid。

  • SyncIntervalSec= – 定义将内存中的日志数据同步到磁盘的时间间隔。请注意!这仅对 err、warning、notice、info、debug 日志优先级有效。其他日志优先级会立即同步到磁盘。默认值为 5m。

  • RateLimitIntervalSec= – 定义日志生成频率的时间间隔。默认值为 30s。

  • RateLimitBurst= – 日志在给定时间间隔内生成的最大条目数。默认值为 10000。如果日志条目在给定的时间间隔内大于 10000 条,则会将冗余日志删除,并且在到达下一个时间间隔之前不会生成新的日志条目。

  • SystemMaxUse= – 控制 /var/log/journal/ 目录中所有日志文件的总大小。

  • SystemKeepFree= – 控制在 /var/log/journal/ 目录中保留多少磁盘空间。1024 基数,后缀包括 K、M、G、T、P、E

  • SystemMaxFileSize= – 限制 /var/log/journal/ 目录中单个文件的大小。如果大小超过了指定的大小,将发生日志轮替

  • SystemMaxFiles= – 指定 /var/log/journal/ 目录中要保留的文件数。当超过了定义的文件数量时,将删除最旧的日志

  • RuntimeMaxUse= – 控制 /run/log/journal/ 目录中日志数据的总大小

  • RuntimeKeepFree= – 控制在 /run/log/journal/ 目录中保留多少空间。

  • RuntimeMaxFileSize= – 控制 /run/log/journal/ 目录中单个日志文件的大小。当日志达到指定的大小时,将发生日志轮替

  • RuntimeMaxFiles=/run/log/journal/ 目录中需要保留多少日志文件。

  • MaxRetentionSec= – 定义日志文件的保留时间,如果超过定义的保留时间,将删除旧的日志文件。0 值表示关闭该功能。后缀有 year、month、week、day、h、m

  • MaxFileSec= – 基于时间的日志轮替。由于已经存在基于文件大小的轮替(SystemMaxFileSizeRuntimeMaxFileSize),因此通常不需要基于时间的日志轮替。将其设置为 0 可禁用此功能。

  • ForwardToSyslog= – 是否将收集的日志消息转发到传统的 syslog 守护程序。默认值为 no。

  • ForwardToKMsg= – 是否将接收到的日志消息转发到 kmsg。默认值为 no。

  • ForwardToConsole= – 是否将接收到的日志消息转发到系统控制台。默认值为 no。如果设置为yes,则还需要配置 TTYPath

  • ForwardToWall= – 是否将收到的日志消息作为警告消息发送给所有登录用户。默认值为 yes。

  • TTYPath= – 指定控制台的路径。需要 ForwardToConsole=yes。默认值为 /dev/console

  • MaxLevelStore= – 设置记录到日志文件的最大日志级别。默认值为 debug

  • MaxLevelSyslog= – 设置转发到传统 syslog 守护程序的最大日志级别。默认值为 debug

  • MaxLevelKMsg= – 设置转发到 kmsg 的最大日志级别。默认值为 notice

  • MaxLevelConsole= – 设置转发到系统控制台的最大日志级别。默认值为 info

  • MaxLevelWall= – 设置发送给所有登录用户的最大日志级别。默认值为 emerg

  • LineMax= – 将日志流转换为日志记录时,每条日志记录允许的最大长度(字节)。以 1024 为基数,后缀可以是 K、M、G、T。默认值为 48K

其他说明

如果你不改变 /etc/systemd/journald.conf 中的任何配置,则 rsyslogjournald 可以共存且互不影响。

Shell > cat /etc/rsyslog.conf
...
#### MODULES ####

module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
       SysSock.Use="off") # Turn off message reception via local log socket;
                          # local messages are retrieved through imjournal now.
module(load="imjournal"             # provides access to the systemd journal
       UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from
       StateFile="imjournal.state") # File to store the position in the journal
#module(load="imklog") # reads kernel messages (the same are read from journald)
#module(load="immark") # provides --MARK-- message capability
...

journald 会将获得的日志数据转发到 /run/systemd/journal/syslog 套接字,以方便使用传统的日志服务(rsyslog 和 syslog-ng)。然而我们可以从配置文件中了解到,rsyslog 不使用套接字从 journald 收集日志,而是通过输入模块(imjournal)集成。

Q: 操作系统可以不使用 journald 进行日志记录吗?

可以。默认情况下,rsyslogjournald 可以在操作系统中共存且互不影响。对于某些面向性能的使用场景(例如数据吞吐量和内存消耗),共存不是最佳的选择。您可以使 rsyslog 仅在套接字模式下运行,这有助于提高性能并以纯文本形式记录所有日志。但是,如果您需要结构化日志,则此更改不适合。相关步骤如下:

Shell > vim /etc/rsyslog.config
...
module(load="imuxsock"
      SysSock.Use="on")
# module(load="imjournal" 
# UsePid="system" 
# StateFile="imjournal.state")
module(load="imklog")
...

Shell > vim /etc/systemd/journald.conf
[Journal]
Storage=none
...
ForwardToSyslog=yes
...

Shell > reboot
Avatar photo

关于 陸風睿

GNU/Linux 从业者、开源爱好者、技术钻研者,撰写文档既是兴趣也是工作内容之一。Q - "281957576";WeChat - "jiulongxiaotianci",Github - https://github.com/jimcat8
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇