rsyslog 模板

 模板是rsyslog的关键功能,它们允许指定用户可能需要的任何格式。

它们也可以用于动态文件生成, 每个output 在rsyslog 使用模板--

数据库写期望它的模板是一个正确的SQL语句。


因此这个是高度自定义的, 你可能会问 所有这些事如何工作的当没有模板被指定



答案是简单的,尽管模板是兼容stock syslogd 格式 被硬编码到rsyslogd.

因此如果没有模板被指定,我们使用一个硬代码的模板

$template tocFormat,"%msg%
"
#$template tocFormat,"%syslogtag%,%msg%
"
$template zjzc-flow01,"/data01/applog_backup/zjzc_log/zj-flow01-catalina.out.%$year%-%$month%-%$day%"       #定义TC:日志存放路径


模板是通过template()语句指定, 可以通过legacy 语句指定



模板处理:



由于缺乏标准的关于日志格式,当一个模板是特定的 它假设包含HEADER,定义在RFC5424


假设,如果MSG 字段是设置“this:is a message”  没有HOSTNAME,也没有指定TAG,分析器会分割消息为:

TAG:this:
MSG:is a message

The template() statement 模板语句


template() 语句是用于定义模板,注意他是一个静态声明,

这意味着所有模板是被定义当rsyslog 读取配置文件, 因此 模板是不被if语句或者配置嵌套的影响

基本的模板语句的结构是如下:

template(parameters)


除了这个简单的语法,list 模板(下面描述)支持扩展语法:


template(parameters) { list-descriptions }


每个模板有一个参数名字, 指定了模板的名字,和一个参数类型,


指定了模板类型。


名字参数必须是唯一的,如果不是 行为是不可预知的。

类型参数指定不同的模板类型,不同的类型简单的启动不同的方式来指定模板内容。


模板类型不影响 一个ouput 插件可以处理它。


创建omfile 动态文件名:


模板可以用于生成actions 使用动态文件名。

比如,你想要分割syslog 消息从不同的主机到不同的文件(一个主机一个文件),你可以定义下面的模板:

template (name="DynFile" type="string" string="/var/log/system-%HOSTNAME%.log")

Legacy example:

$template DynFile,"/var/log/system-%HOSTNAME%.log"



$template zjzc-flow01,"/data01/applog_backup/zjzc_log/zj-flow01-catalina.out.%$year%-%$month%-%$day%"





legacy format:


在rsyslog v6版本之前,你需要使用 $template 语句来配置模板。


它们提供等价于 字符串和基于插件的模板。


legacy 语法在rsyslog v7版本继续工作,但是我们推荐避免legacy 格式用于新的配置文件。

Legacy 和当前配置语句可以共存在相同的配置文件


The general format is

$template name,param[,options]

name 表示模板名字,param 是一个单独的参数 指定模板的内存


字符串:


这个参数 是相同的字符串 指定当前格式 你指定的在字符串参数,例如:


$template strtpl,"PRI: %pri%, MSG: %msg%
"


Legacy String-based Template Samples


这个章节 提供一些默认的模板以legacy 格式, 是用于 rsyslog v6前的版本。


注意 这个格式是仍旧被支持的,因此没有必须要升级存在的配置。

然而, 它是强烈推荐legacy 结构是不在被使用的当 使用新的模板。

注意 每个 $template statement  是在一个单独的行


原文地址:https://www.cnblogs.com/hzcya1995/p/13349883.html