歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> rsyslog 模板

rsyslog 模板

日期:2017/3/1 11:41:47   编辑:關於Linux

模板是rsyslog的關鍵功能,它們允許指定用戶可能需要的任何格式。

它們也可以用於動態文件生成, 每個output 在rsyslog 使用模板--

數據庫寫期望它的模板是一個正確的SQL語句。

因此這個是高度自定義的, 你可能會問 所有這些事如何工作的當沒有模板被指定

答案是簡單的,盡管模板是兼容stock syslogd 格式 被硬編碼到rsyslogd.

因此如果沒有模板被指定,我們使用一個硬代碼的模板

$template tocFormat,"%msg%\n"

#$template tocFormat,"%syslogtag%,%msg%\n"

$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%\n"

Legacy String-based Template Samples

這個章節 提供一些默認的模板以legacy 格式, 是用於 rsyslog v6前的版本。

注意 這個格式是仍舊被支持的,因此沒有必須要升級存在的配置。

然而, 它是強烈推薦legacy 結構是不在被使用的當 使用新的模板。

注意 每個 $template statement 是在一個單獨的行

Copyright © Linux教程網 All Rights Reserved