/etc/rsyslog.conf
是 Linux 系统上 rsyslog 服务的配置文件。
rsyslog 是一个系统日志守护程序,用于收集、处理和转发系统日志消息。该配置文件定义了 rsyslog 的行为,包括消息的存储位置、过滤规则、输出目标等。
注意:
由于linux日志随着时间累计,经常在/etc/logrotate.conf中配置定期轮转日志文件。
常见配置项:
模块加载:
$ModLoad module_name
通过 $ModLoad
可以加载不同的模块,例如 imuxsock
用于接收系统日志消息。
输入规则:
$InputFileName filename
$InputFileTag tag
$InputFileStateFile stat_file
$InputFileSeverity severity
$InputRunFileMonitor
用于配置 rsyslog 监控文件的输入规则。
消息过滤:
if expression then action
使用 if
语句可以定义过滤规则,根据消息的特定属性进行过滤。
输出目标:
destination destination_name { … }
日志格式:
$template template_name “format_string”
使用 $template
可以定义消息的输出格式。
规则设置:
$ActionQueueFileName name
$ActionQueueMaxDiskSpace size
$ActionQueueSaveOnShutdown on/off
用于配置动作队列的规则,控制消息的缓存和处理。
默认规则:
$DefaultRules
定义了一些默认的日志规则,如将所有消息写入 /var/log/messages
。
这只是 /etc/rsyslog.conf
文件中的一小部分配置项。rsyslog 提供了丰富的配置选项,可以根据需要进行定制。在编辑配置文件之前,建议备份文件以防止配置错误导致日志服务问题。
更详细的配置和规则语法可以在 rsyslog 官方文档中找到
实例配置项:
#指定 rsyslog 的工作目录。在这个目录下,rsyslog 将存储临时文件、状态文件和其他运行时数据。
$WorkDirectory /var/lib/rsyslog
#设置默认的日志文件模板为 RSYSLOG_TraditionalFileFormat,该模板定义了日志文件的输出格式。这个设置确保日志以传统的格式进行记录。
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#这一行是注释掉的,表示文件同步功能被禁用。文件同步功能可能会对性能产生极大的影响,因此在默认情况下是禁用的。
#$ActionFileEnableSync on
#包含 /etc/rsyslog.d/
目录下所有以 .conf
结尾的配置文件。这样,你可以将配置拆分为多个文件,以方便管理和维护。
$IncludeConfig /etc/rsyslog.d/*.conf
#禁用通过本地日志套接字接收消息。这表示本地消息通过 imjournal 模块进行检索,而不是通过传统的本地日志套接字。这可以提高性能。
$OmitLocalLogging on
#指定 imjournal 模块使用的状态文件的名称为 imjournal.state
。这个文件存储了 imjournal 模块在日志中的位置信息。
$IMJournalStateFile imjournal.state
定义 rsyslog 的消息处理规则
#### RULES ####
#指定将所有 info 级别及以上的消息(除了邮件、authpriv 和 cron 消息)记录到 /var/log/messages
文件。
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#将 authpriv(私有认证)级别的消息记录到 /var/log/secure
文件。
authpriv.* /var/log/secure
#将所有邮件相关的消息记录到 /var/log/maillog
文件。使用 -
表示如果文件不存在,则忽略错误,而不是创建文件。
mail.* -/var/log/maillog
#将所有 cron 相关的消息记录到 /var/log/cron
文件
cron.* /var/log/cron
#将紧急级别(emerg)的消息发送给用户。:omusrmsg:*
是一个输出模块,用于向用户显示消息。
*.emerg :omusrmsg:*
#将 uucp 和 news 的 crit 级别及以上的消息记录到 /var/log/spooler
文件。
uucp,news.crit /var/log/spooler
#将 local7(本地 7)级别的消息记录到 /var/log/boot.log
文件。
local7.* /var/log/boot.log