Action 动作

Actions:

对象动作描述对消息要怎么被处理,它们通过output 模板实现:

这个action对象有不同的参数:

Legacy Format

请注意 legacy action 格式是很难来得到正确的,它是推荐使用RainerScript-Style

action 格式尽可能的!

使用legacy format 关键问题是一个单独的action 是定义通过多行配置行,

可能遍布所有的rsyslog.cof.


甚至 多行action定义会混杂(通常不是故意的).

如果 legacy actions format 需要被使用 它是强烈推荐放置所有的配置语句固定在一个单独的action


请注意legacy action 参数不影响 RainerScript action 对象,因此你可以定义如下:


$actionResumeRetryCount 10
action(type="omfwd" target="server1.example.net")
@@server2.example.net

server1的 “action.resumeRetryCount” 参数没有设置,代替的是 server2’s is设置的

新的RainerScript action  格式的目的是避免混乱,参数的实际使用。

因此,它会产生相反效果对于legacy action parameters 在一个 RainerScript definition. 

Legacy Description:

模板可以与很多actions结合,如果被使用,指定模板是用于生成消息内容(代替默认模板).

为了指定一个模板,写一个;分号在action值跟在模板名字后面。


$template testlog01,"/data01/%fromhost-ip%/%fromhost%.%$year%-%$month%-%$day%"

注意: 模板必须是定义在被使用前。

可以定义一些模板,使用它们在selector 行,定义更多的模板和使用它们在下面的selector lines.

你可以有多个actions 对于一个单个selector(或者更加精确的一个这样的selector line 过滤器)


每个action 必须在它自己的行和必须以&开始

*.=crit :omusrmsg:rger
& root
& /var/log/critmsgs

Regular File 常规文件:

通常消息是记录到真正的文件。文件通常是通过全路径名指定,以斜杠/开始。


从4.6.2和5.4.1(v5版本之前不支持这个) 相关的文件也可以被指定。

为了这样做, 那些必须以一个点号开始。


请注意,使用  ”./file-in-current-dir.log”来指定一个文件在当前的目录。



请注意 rsyslogd 通常改变它的工作目录到root,因此相关的文件名必须小心测试.

你可以前缀每个条目使用-减号来忽略同步文件。

如果系统是连接到一个可靠的UPS ,你接收大量的额日志(例如防火墙日志)

文件名可以是静态的(总是相同的)或者动态的(不同的基于接收到的消息).

后面是有用的 如果你自动分散消息到不同文件基于一些消息标准。

例如,动态文件selectors 允许你split 消息到不同的文件基于主机名。

使用动态文件名字, 所有内容都是自动的不需要任何过滤器。

它工作通过模板系统,首先,你定义一个模板用于文件名。


一个例子可以从上面例子看到。 我们会使用“DynFile” 模板定义。

动态文件是通过指定一个?代替slash,后面跟着模板名字。



    *.* ?DynFile

这就是你要做的,Rsyslog 会自动生成文件名用于存储正确的消息到正确的文件。


注意 负号也适用于动态文件 因此为了避免同步,可以使用


    *.* -?DynFile

当然你可以使用模板指定输出格式:


    *.* ?DynFile;MyTemplate

提醒一句:rsyslog 创建需要的文件, 所以 如果一个新的host 使用你的syslog server,rsyslog 会自动创建文件。


创建目录页是支持的,比如 你可以使用hostname作为目录,程序名作文件名:



    $template DynFile,"/var/log/%HOSTNAME%/%programname%.log"


Named Pipes

rsyslog(8) 版本一句支持记录输出到一个命名管道(fifos)

Remote Machine 远程主机:

Rsyslogd 提供远程日志记录功能,即能够发送消息到一个远程主机。

接收消息从远程主机

使用这个功能你是可以控制所有的syslog 消息在一个机器上,

如果所有其他机器会远程激励, 这是管理需要


转发消息到另外的主机,预先考虑主机名和@符号。

一个@意味着消息通过UDP协议转发(syslog标准).

如果你准备2个@@符号,消息会通过TCP转发。

注意 普通的TCP 基于syslog 没有正式规范,但是主要的syslogd 支持它(例如syslog-ng或者WinSyslog)

z<number>

使用zlib压缩消息,<number> 是压缩级别。