rsyslog和过滤规则
/etc/rsyslog.conf
是rsyslog服务的总配置文件
/etc/rsyslog.d
该目录是单独配置的rsyslog配置文件
vim /etc/rsyslog.conf
$IncludeConfig /etc/rsyslog.d/*.conf
# 个人建议,将所有的rule都配置在该目录下,在/etc/rsyslog.conf中不写rule
配置文件/etc/rsyslog.conf主要有3个部分
MODULES :模块
GLOBAL DRICTIVES :全局设置
RULES:规则
RULES:规则
过滤
$msg
if $msg contains '%ASA-' and $syslogseverity <= '6' then {
-/var/log/cisco-asa.log
stop
}
模板
任何rsyslog
生成的日志都可以根据需要使用模板进行格式化,要创建模板,使用如下指令
$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
这里的$template
指令表明了接下来的内容定义了一个模板,TEMPLATE_NAME
是模板的名称,接下来双引号之间的内容为模板的内容。
这里还有一个 OPTION , 它指定了模板的功能,支持选项为sql
和stdsql
,在使用数据库存储的时候会用到。
生成动态文件名
模板可以用来生成动态文件名,就如之前所述,在使用动态文件名的时候,需要在 ACTION 中的模板名称前增加?
表明该文件名是动态生成的。
例如:
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile
timegenerated
属性从日志信息中提取出消息的时间戳,这样可以为每个日志生成唯一文件名称。
以下是一些简单属性的示例:
以下属性获取系统日志消息的整个消息文本:
%msg%
以下属性获取系统日志消息的消息文本的前两个字符:
%msg:1:2%
以下属性获取系统日志消息的整个消息文本,并删除其最后一个换行符:
%msg ::: drop-last-lf%
以下属性获取接收到syslog消息时生成的时间戳的前10个字符,并根据RFC 3999日期标准对其进行格式化。
%timegenic:1:10:date-rfc3339%
# %syslogpriority-text% : syslog priority
# %syslogfacilityt-text% : syslog facility
# %timegenerated% : timestamp when the message was received
# %HOSTNAME% : hostname
# %syslogtag% : tag
# %msg% : the message sent to syslog
所有的属性参考:
https://www.rsyslog.com/doc/master/configuration/properties.html
logrotate配置文件
logrotate的配置文件为/etc/logrotate.conf
自定义的log rotation配置文件在/etc/logrotate.d目录下
比较全的总结:
https://www.jianshu.com/p/e129ed893362
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!