Rsyslog 配置详解:模板功能实现日志格式定制

星磊酱_9652

星磊酱_9652

2026-07-15

409人浏览

原创

rsyslog模板是解决日志混乱的核心手段,支持传统字符串模板和新式rainerscript对象模板两种定义方式,用于按主机名分目录存储和输出结构化json日志,并需注意定义顺序、语法验证与调试方法。

rsyslog 配置详解:模板功能实现日志格式定制

Rsyslog 的模板功能不是锦上添花的选项,而是解决日志混乱问题的核心手段。当你面对多台服务器共用一个日志文件、排查故障耗时费力时,真正有效的办法是让日志从源头就按需组织——靠的就是模板。

模板定义方式与语法要点

rsyslog 支持两种主流定义方式,适用场景不同,不能混用:

  • 传统字符串模板:用 $template 开头,适合路径动态生成或简单格式拼接
    例如:$template HostPath,"/var/log/%hostname%/%programname%.log"
  • 新式对象模板(RainerScript):用 template(name="xxx" type="list") 声明,支持嵌套、条件、JSON 输出等高级能力
    例如:template(name="jsonout" type="list") { property(name="timereported" format="json") constant(value=",") property(name="hostname" format="json" outname="host") }

注意:%hostname% 这类占位符叫“属性”,不是变量名,大小写敏感;属性后可加过滤器,如 %hostname:1:3% 表示取主机名前3个字符。

按主机名自动分目录存储

这是最常用也最实用的模板落地场景。目标是每台机器的日志独立成目录,避免交叉污染。

  • 先定义模板:template(name="ByHost" type="string" string="/var/log/rsyslog/%hostname%/%$year%-%$month%-%$day%.log")
  • 再绑定规则:在 rules 区域添加 *.* ?ByHost(? 表示使用模板命名的输出路径)
  • 确保目录可写:rsyslog 不会自动创建多级目录,需提前 mkdir -p /var/log/rsyslog/web01 或配合 logrotate 初始化

如果主机名含下划线或点号,建议用 %hostname:R,REPLACE:_.:/ 替换非法路径字符,防止写入失败。

GradPen论文
GradPen论文

一款AI论文写作工具,主要用于GradPen是一款AI论文智能助手,深度融合DeepSeek,为您的学术之路保驾护航,祝您写作顺利!,适合需要提升相关任务效率的用户。

下载

结构化日志输出(JSON 格式)

对接 ELK、Loki 等日志平台时,原始文本日志解析困难,JSON 是更稳妥的选择。

  • 使用 type="list" 模板,每个 property 对应一个字段,constant 插入分隔符
  • 关键字段推荐包含:timereported(带时区)、hostname、programname、severity-text、msg
  • 避免直接输出 %msg%,改用 property(name="msg" format="json"),自动转义引号和换行符

输出到文件时,一行一条 JSON,便于后续工具逐行读取;转发到远程 TCP 端点时,同样适用该模板。

模板生效与调试技巧

配置写完不生效?常见卡点在这里:

  • 模板必须定义在 rules 规则之前,否则引用时报错
  • 修改配置后执行 sudo rsyslogd -N1 验证语法(-N1 表示只做一次配置检查)
  • 启用调试日志:export RSYSLOG_DEBUG="debug on" && sudo rsyslogd -d -n,观察模板是否被解析、属性是否为空
  • 测试模板效果:用 logger "test message" 发送日志,立刻检查目标路径或内容格式

模板本身不处理日志筛选,它只管“怎么写”;筛选逻辑由 selector(如 auth.*)控制,两者需配合使用。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
elk是什么意思
elk是什么意思

ELK指的是Elasticsearch、Logstash和Kibana三个开源软件的组合。想了解更多elk的相关内容,可以阅读本专题下面的文章。

2023.12.18

2740

6

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

0

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

0

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

0

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

0

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

0

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

200

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

120

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

100

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习