man rsyslog.conf的介绍

    这篇博文是在CentOS Linux release 7.0.1406(Core)的发行版本下写的,发行版本可以通过cat /etc/centos-release查看。

    下面翻译的是man rsyslog.conf中对于rsyslog.conf的介绍:

1、名称:

    rsyslog.conf-rsyslogd(8)的配置文件;

2、描述:

    rsyslog.conf文件是在*nix系统上将系统消息记录到日志中的rsyslogd(8)的主要配置文件,这个文件指定了记录日志的规则。对于特殊的特性可以参见rsyslogd(8)的man页。rsyslog.conf向后兼容sysklogd的syslog.conf文件。所以如果你是从sysklogd上迁移过来的,你可以将syslog.conf重命名并且通常它是可以正常工作的。

    注意到这个版本的rsyslog有着大量的html格式的文档。提供在./doc子目录下并且如果你是通过包系统安装的rsyslog则可能在一个单独的包中。为了使用rsyslog的先进的功能,你需要去查看这些html文档,因为man手册仅仅覆盖了操作的基本的方面。

3、模块:(模块化输入,每个模块都有自己特有的输入方式,比如/etc/rsyslog.conf中$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)jizhichi

    rsyslog有一个模块化的设计,因此,其中的模块数量不断增长。关于它们的全部/详细描述参见html文档。

    (1)omsnmp:SNMP trap output module

    (2)omgssapi:Output module for GSS-enabled syslog

    (3)ommysql:Output module for MySQL

    (4)omrelp:Output module for reliable RELP protocol(prevents message loss).详细信息,参见下面的imrelp和html文档(还有我之前翻译的RELP的wiki介绍:http://blog.csdn.net/u010154760/article/details/45156943).It can be used like this:

          *.*       :omrelp:server:port

          *.*       :omrelp:192.168.0.1:2514      #actual sample(实际例子)

    (5)ompgsql:Output module for PostgreSQL

    (6)omlibdbi:Generic(通用) database output module(Firebird/Interbase,MS SQL,Sybase,SQLite,Ingres,Oracle,mSQL)

    (7)imfile:Input module for text files

    (8)imudp:Input plugin(插件) fo若UDP syslog.Replaces the deprecated(过时的,弃用的) -r option.Can be used like this:

             $ModLoad imudp
             $UDPServerRun 514

    (9)imtcp:Input plugin for plain TCP syslog(纯TCP syslog).Replaces the deprecated -t option.Can be used like this:

            $ModLoad imtcp

            $InputTCPServerRun 514

    (10)imrelp:Input plugin for the RELP protocol.RELP can be used instead of UDP or plain TCP syslog to provide reliable delivery of syslog messages. Please note that plain TCP syslog does NOT provide truly reliable delivery,with it messages may be lost when there is a connection problem or the server shuts down. RELP prevents message loss in those cases.It can be used like this:

              $ModLoad imrelp
              $InputRELPServerRun 2514

    (11)imgssapi:Input plugin for plain TCP and GSS-enable syslog

    (12)immark:Support for mark messages

    (13) imklog:Kernel logging. To include kernel log messages, you  need to do:

              $ModLoad imklog
             Please  note that the klogd daemon is no longer necessary and consequently no longer provided by the rsyslog  package.(即将klogd模块化了,这是与书中不同的地方)

    (14)  imuxsock:Unix  sockets,  including the system log socket. You need to specify:

             $ModLoad imuxsock
              in order to receive log messages from local  system  processes. This config directive should only left out(忽略) if you know exactly what you are doing.

4、基本结构:

    由井号(‘#’:hash mark)开始的行和空行被忽略。Rsyslog.conf应该包含下面的部分(在文件中根据推荐的顺序排序)

    (1)Global directives(全局指令):

             全局指令设置了整个rsyslog daemon的一些全局特性,例如主消息队列的尺寸($MainMessageQueueSize),加载的外部模块($ModLoad)等等。所有的全局指令需要独自占用一行并且必须以一个美元标志开始。完整的全局指令列表可以在doc目录或者在线网页的html文档中找到。

    (2)模板

            模块使得你可以指定记录日志消息的格式。它们也用于动态文件名的生成。它们需要在它们在规则中使用之前被定义。关于模板的更多信息参见下面的TEMPLATES部分。

    (3)输出通道:

          输出通道为用户可能希望的任意类型的输出提供了一个保护伞。它们需要在他们在规则中使用之前被定义。关于输出通道的更多信息参见下面的OUTPUT CHANNELS部分。

     (4)规则(选择子+动作)

         每一个规则行有两个域组成,一个选择子域和一个动作域。这两个域通过多个空格或者tab隔开。选择子域指定了属于指定动作的设施和优先级的一种模式。

5、选择子(SELECTORS)

    选择子域其自身同样由两个部分自称,一个设施和一个优先级,二者通过一个句号(“.”)隔开。这两个部分都区分大小写并且也可以指定为十进制数,但是如果你被警告了,就不要这样做了。设施和优先级在syslog(3)中被描述。下面提到的名字对应于/usr/include/syslog.h中相似的LOG_-values。

    设施是下面关键字中的一个:auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,security(和auth一样),syslog,user,uucp和local0到local7。其中secutity关键字不应该在被使用,并且mark只在内部使用所以不应该在应用程序中使用。无论如何,你可能希望指定并且重定向这些消息。设施指定了产生这些消息的子系统,比如所有的mail程序使用mail设施(LOG_MAIL)来记录日志,如果它们使用syslog记录日志的话。

    优先级是下面的关键字中的一个:从升序顺序依次是:debug,info,notice,warning,warn(和warning一样),err,error(和err一样),crit,alert,emerg,panic(和emerg一样)。关键字error,warn和panic被遗弃并且不应该再被使用。优先级定义了消息的严重程度。

     原来的BSD syslogd的行为是所有指定优先级或者更高的消息根据指定的动作被记录到日志。Rsyslogd同样这样,但是加入了一些扩展。

     除了上面提到的名字外,rsyslogd加入了下面的一些扩展:一个星号('*':asterisk)代表所有的设施或优先级(取决于它在“.“的前面还是后面);关键字none代表无给定设施的优先级。

    你可以通过使用逗号(”,“:comma)在一个表述中指定多个设施具有相同的优先级模式。你可以指定你想要的足够的设施,记住只有设施部分可以这样做,优先级部分的话将会被跳过。

    通过使用分号(”;“:semicolon)多个选择子可能指定为同一个动作。注意选择子域的每个选择子可以覆盖前面的部分,通过这种方式可以从模式中排除一些优先级。

    相对于原来的BSD,Rsyslogd有了一个语义扩展,使得它的使用更加直观。你可以为每个优先级前面一个等号(‘=’)来指定只有这单个优先级而并不是上面说的任意优先级。你也可以(一样是有效的)为每个优先级前面使用一个感叹号(‘!’)来忽略所有的这些优先级,或者是这一个或者是它和任意比它高的优先级。如果你同时使用了这两个扩展,感叹号必须在等号前面,只是直观地使用它。

6、行为

    一个规则的行为域描述了如何处理消息。总体上,消息内容被写到一种”log-file“中,但是也可能存在其它的活动,例如写到一个数据表中或者发送到另一个主机上。

    (1)、Regular file:典型地,消息被记录到真正的日志文件中,该文件通过全路径名只是,以一个斜线‘/’开始,例如:

    *.*   /var/log/traditionalfile.log;RSYSLOG_TraditionalFormat                                 #以传统的格式记录日志到文件

    注意到:如果你想在你的日志文件中使用高精度的时间戳,你可以去掉上面的”;RSYSLOG_TraditionalFormat“。这将会使用默认的模板,如果没变的话,使用RFC 3339时间戳。

    例如:

    *.*   /var/log/file.log                               #log to a file with RFC3339 timestamps

    (2)、命名管道:这个版本的rsyslogd(8)已经支持将输出记录到命名管道中(fifos)。一个fifo或者命名管道可以作为日志消息的一个目的地通过在文件名之前加上一个管道符(‘|’)。这对于调试很方便,注意到fifo必须在rsyslogd(8)开始之前通过mkfifo(1)创建。

    (3)、终端和控制台:

    如果你指定的文件是一个tty,将会进行的是特殊的tty处理,对于/dev/console同样是这样。

    (4)、远程机器:

    有三种方式来发送消息:传统的UDP传输,丢失率极高但是是标准的。基于只有在特定情况下丢失数据的传输的plain TCP但是广泛可用。和RELP传输,它不丢失信息但是当前仅在rsyslogd3.15.0及以上版本中可用。

    通过UDP发送消息,主机名之前要加上一个”@“标志,通过TCP传输要加上”@@“标志,通过RELP传输,需要在主机名前面加上字符串“:omrelp:”。

    例如:

    *.*       @192.168.0.1

    在上面的例子中,消息通过UDP发送到192.168.0.1的机器上,目标端口默认为514。因为UDP的天性,你将很可能在传输过程中丢失一些信息。如果你希望高流量,你会丢失相当的一部分信息(流量越高,丢失越严重)。

    如果你希望杜绝消息丢失,使用RELP:

     *.*       :omrelp:192.168.0.1:2514

    注意到给出了一个端口名因为没有标准的端口。

    一定要记住你需要加载正确的输入和输出插件(参见上面的”模块“)。

    注意rsyslogd关于远程传送提供了一系列的选项。想看全部的细节,请看html文档。

    (5)一系列用户

    通常要紧的信息也会定向到机器上的”root“,你可以通过仅仅写出”:omusrmsg“后面跟上用户名来指定应该得到消息的一系列用户。你可以通过逗号(”,“)来指定不止一个用户。如果他们登录他们会得到信息(for  example: ":omusrmsg:root,user1,user2")。

    (6)每个登录的用户:

     紧急消息通常要发送给当前在线的所有的用户来提醒他们一些奇怪的事情发生在了这个系统上。使用一个”:omusrmsg:*“来制定这个wall(1)特性。

    (7)数据库表

    这允许将消息记录到一个数据表中,默认情况下,一个MonitorWare-compatible模式被需要。你可以通过rsyslog包中的createDB.SQL文件来建立这种模式,你也可以使用任何你喜欢的模式-你仅仅需要定义一个合适地模板并且将该模板分配到行为上。

    数据库日志的进一步细节请参见html文档。

    (8)丢弃: 

    如果丢弃行为被实施,收到的消息会被立刻丢弃,丢弃在你想要过滤到一些烦人的消息是非常有效,不然这些消息就会充满你的日志文件。为了实现这个目标,将丢弃动作尽早的放到你的日志文件中,这在基于属性的过滤器中通常表现很好,你可以很自由的指定你想做什么。

    例如:

    *.*    ~               #丢弃所有消息。

    (8)、输出通道

    为行为绑定一个消息通道定义(see there for details,定义是在前面全局指令部分定义的,使用之前要先定义)。输出通道行为一定要以$-sign开始,例如,如果你想为行为绑定你的消息通道定义”mychannel“,使用”$mychannel“。输出通道支持模版定义和所有其他行为一样。

    (10)shell执行

    这使得在子shell中执行一个程序,该程序接将接收到的模板产生的消息作为仅仅的命令行参数。Rsyslog等待直到程序结束才继续执行。

      例如:

     ^program-to-execute;template

    这个program-to-execute可以是任意的可执行程序,它接收模板字符串作为唯一的一个参数(argv[1]);

7、过滤条件

    Rsyslog提供三种不同的“过滤条件”:

        1、“传统的”基于严重程度和设置的选择子;

        2、基于属性的过滤器;

3、基于表达式的过滤器;

    (1)、选择子:选择子是过滤syslog消息的传统方式。它们以它们原有的语义在rsyslog中保留了下来,因为它是广为人知的,高效的并且需要兼容过去的syslogd配置文件。如果你仅仅需要基于优先级和设施的过滤器,你应该通过选择子的行来实现。它们不是rsyslog中的二等公民并且为这种工作提供了最好的新能。

    (2)、基于属性的过滤器:基于属性的过滤器是rsyslogd独有的,它们允许在任何属性上过滤,比如HOSTNAME,syslogtag和msg(关于属性下面还有详细的介绍)。

    一个基于属性的过滤器必须在第0列以一个冒号开始,这告诉rsyslogd它是一个新的过滤类型。冒号后面必须跟着属性的名字,一个冒号,将要进行的比较操作的名字,一个冒号和将要比较的值。这个值必须被双引号引起来。在冒号之间可以有空格和tabs。属性名和比较操作是区分大小写的,所以“msg”是可以工作的,而"MSG"是一个不合法的属性名。简单来说,语法如下:

   :property, [!]compare-operation, "value"(可以参见http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html

    下面是目前支持的比较操作:

    1、contains:检查value中所提供的字符串是否包含在属性中;

    2、isequal:将提供“value”字符串和属性的内容进行比较,这两个值必须严格相等来匹配;

    3、startswith:检查是否value精确地在属性值的开始被找到;

    4、regex:将属性和提供的正则表达式进行比较;

    示例::msg, regex, "^ [g-z]"    /root/rsyslog_worker_dir/2000.log   #以字母g到z开头的消息,注意msg开头有个空格(注意三种过滤器不能混用)

  (3)、基于表达式的过滤器(Express-Based Filters):特性参见html文档。

8、模板(TEMPLATES)(注:基于属性的过滤是用来选择消息的,而模板是用来定义消息的格式,是对于过滤后消息格式 的定义,二者是不同的,使用方法是将模板名称放在路径后,和路径名使用逗号隔开,例子参见:http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html)

    rsyslog的每一个输入使用模版-这也适用于files,user messages等等。兼容过去的syslogd格式的模板被硬编码到rsyslogd中。如果没有制定模板,我们使用这些硬编码模板,在syslogd.c中搜索“template_”,你将会找到这些硬编码;

    一个模板由一个模板指令,一个名字,实际的模板文本和可选的选项组成,一个样本如下:

                  $template  MyTemplateName,"\7Text  %property%  some  more text\n",<options>   #属性property是一个统称,比如msg中的字段

    “$template”是模板指令,它告诉rsyslog改行包含一个模板。反斜线是一个转义字符(escape character)。例如\7是”响铃“符(这是ASCII码值)。\n是一个新的行。rsyslog的这个集合当前有一点受限。

    模板中的所有文本都是按照字面意思是用,出了百分号中的部分。它们是属性并且允许你访问syslog消息的内容。Properties通过property replacer(属性替代)访问并且它可以比如选择一个子串或者实现特定格式日期,关于这个的的详细介绍在本man页的PROPERTY REPLACER部分。

    为了转义:

    %=\%

     \ = \\     #其中\被用来转义(和C语言一样)

     $template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg%\n"     (传统格式)

    请注意模板也可以产生选择子行的动态文件名。例如,如果你想要区分来自不同主机的syslog消息到不同的文件中(每个主机一个),你可以定义如下的模板:

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

    这个模板然后就可以用来定义一个输出选择行,它将会导致一些比如“/var/log/system-localhost.log”。

    (1)、模板选项:

    模板选项<options>是可选的。它包含影响模板整体的选项。细节如下。确保不要将template选项和property选项混淆-后者是由属性替代处理并且使用在一个单独的属性(并不影响这个模板)。

    模板选项目前是不区分大小写的,当前定义如下:

    1、sql:将字符串格式化为适用于MySQL格式的一种SQL语句。它将会在每个域中用它自己反斜线转义的对应物("´"  and  "\")替代单引号(“‘”)和反斜线字符。。请注意在MySQL配置中,NO_BACKSLASH_ESCAPES必须被关闭以使得这种格式化生效(默认是这样的)。

    2、stdsql:将字符串格式化为将要发送到符合标准的sql服务上的一种SQL语句。它将会在每个域中用两个单引号(“’‘”)替换单引号(“’”)。如果在MySQL

配置中NO_BACKSLASH_ESCAPES被打开你必须将stdsql和MySQL一起使用。(注:NO_BACKSLASH_ESCAPES字面上表示就是没有反斜线转义字符

    sql或者stdsql选项在一个模板被用来写到数据库中时必须被使用,否则可能会发生注入。请注意由于有的厂商违反了sql标准并且引入了他们自己的转义方法, 而单一的一个选项不可能做所有的工作。所以你自己必须确保你使用的是正确的格式。如果你选择了错误的,你在sql注入面前仍旧弱势。

    请注意到database的写入这*检查*sql选项是否在模板中。如果它不存在,将无法写入数据库。这是为了戒备你偶然的遗忘导致容易遭到sql注入。sql选项对于文件也有用-特别是因为性能原因你想将它们导入到另一台机器的数据库中时。但是,如果你不是真的需要,不要使用它(只是说不要乱用)-在其它之间,它消耗处理时间。虽然不多,但是在真正繁忙的系统中你可能会注意到它。    

    写到数据库的动作的默认模板设置了sql选项集。

    (2)、模板示例:

    请注意样本可能分裂在多行。但是一个模板实际上绝对不能被分裂到多行。

    1、和传统的syslogd文件输出类似的模板:

     $template TraditionalFormat,"%timegenerated% %HOSTNAME%%syslogtag%%msg:::drop-last-lf%\n"  #多个属性被多个百分号隔开,百分号内部是属性替代部分,关于属性替代的详细介绍在后面

    2、一个告诉你稍微多一点消息的模板:

     $template  precise,"%syslogpriority%,%syslogfacility%,%timegenerated%,%HOSTNAME%,%syslogtag%,%msg%\n"

    3、一个RFC 3164格式的模板:

     $template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"  #可以看出这里是对时间戳进行了处理

    4、传统地用于用户信息的格式的模板:

    $template usermsg," XXXX%syslogtag%%msg%\n\r"

    5、传统的wall-message格式的一个模板:

     $template wallmsg,"\r\n\7Message from  syslogd@%HOSTNAME%at %timegenerated%"     #\7表示响铃

    模板可以用来写入到数据库(请注意SQL模板选项)

    $template MySQLInsert,"insert iut, message, receivedat values ('%iut%', '%msg:::UPPERCASE%', '%timegenerated:::date-mysql%') into systemevents\r\n", SQL      #values用来设定插入数据的值,百分号中的值被替换后,其中的值由单引号包含,这个和shell无关,不要牵扯到shell元字符的部分;

    注意点1:这个模板已经被以StdDBFmt的名称嵌入到核心应用程序中,所以你不需要定义它

    注意点2:你需要安装好MySQL模块来使用这个模板。

9、输出通道(OUTPUT CHANNELS)

    输出通道是一个新的概念,第一次在rsyslog中引入。在撰写本文时,很有可能它们在将来会被不同的事物所取代。所以如果你使用它们,当你升级到一个后续的版本时要做好修改你的配置文件的语法的准备。

     输出通道通过一个$outchannel指令定义,它的语法如下:

     $outchannel name,file-name,max-size,action-on-max-size

     name是输出通道的名称(不是文件名),file-name是将要被写到的文件名称,max-size是所允许的最大尺寸,action-on-max-size是当达到最大尺寸时的一个命令。这个命令总是只有一个参数。二进制是action-on-max-size的第一个空格之前的部分,它的参数是空格之后的部分。( The  binary  is that part of action-on-max-size before the first space, its parameter is everything behind that space.)

    要记住$outchannel仅仅定义了名字为name的一个通道,但是它并没有激活它。为了这样,你必须使用一个选择子行(看下面)。这个选择子行包含通道的名称,并且在它的前面机上了“:omfile:$”,一个示例如下:

     *.* :omfile:$mychannel

10、属性替代(PROPERTY REPLACER)

    属性替代是rsyslogd的输出系统的一个核心组件。一个syslog消息有很多定义好的属性(如下)。这些属性中的每一个可以被访问并且可以通过属性替代来操纵。有了属性替代,我们可以容易的使用一个属性值的一部分或者操纵值,例如,通过将所有的字符转换为小写。

    1、访问属性(Accessing Properties):

    Syslog消息属性在模板中被使用。它们通过被放置在百分号之间被访问。属性可以通过属性替代来修改。完整地语法如下:

     %propname:fromChar:toChar:options%

    propname是要访问的属性名称,它是区分大小写(case-sensitive)的。

    2、可用的属性(Available Properties):

    msg:   the MSG part of the message (aka "the message" ;)(即又名“the messages”;)

    rawmsg:   the message exactly as it was received from  the  socket.Should be useful for debugging.

    HOSTNAME:  hostname from the message

    FROMHOST:  hostname  of the system the message was received from (in a relay chain, this is the system immediately in front of us and not necessarily the original sender)(在中继链中,它是直接在我们之前的系统而并不一定是原始的发送者)

    syslogtag: TAG from the message(消息的标签)

    programname: the  "static" part of the tag, as defined by BSD syslogd.For example, when TAG is "named[12345]",  programname  is "named".(由BSD syslogd中定义的,消息的“静态部分”)      

    PRI:  PRI part of the message - undecoded (single value)(未解码的(单值))

    PRI-text:  the PRI part of the message in a textual form (e.g. "syslog.info")(消息的文本形式的PRI部分(比如“syslog.info”))

    IUT:    the monitorware InfoUnitType - used  when  talking  to  a MonitorWare backend (also for phpLogCon)(monitorware InfoUnitType-用于与monitorware后端对话(也作为phpLogCon))(phpLogCon说明:phpLogCon是一个基于web的系统和网络日志的浏览、搜索和基本分析工具。phpLogCon的新版本已经更名为LogAnalyzer)

    syslogfacility:  the facility from the message - in numerical form(数字形式)

    syslogfacility-text:   the facility from the message - in text form(文本形式)

    syslogseverity:     severity from the message - in numerical form

    syslogseverity-text:  severity from the message - in text form

    timegenerated:   timestamp  when  the message was RECEIVED. Always in highresolution(消息接收时的时间戳。通常是高分辨率的

    timereported:timestamp from the message. Resolution  depends  on  what was provided in the message (in most cases, only seconds)(消息中的时间戳,精度取决于消息中提供的内容(通常情况下,只到秒))

    TIMESTAMP:alias for timereported(timereported的别名)

    PROTOCOL-VERSION:The  contents  of  the  PROTOCOL-VERSION  field from IETF draft draft-ietf-syslog-protocol(来自于IETF草案draft-ietf-syslog-protocol的PROTOCOL-VERSION域的内容)

    STRUCTURED-DATA:The contents of the STRUCTURED-DATA field from IETF draft draft-ietf-syslog-protocol(IETF草案draft-ietf-syslog-protocol中的STRUCTURED-DATA域的内容)

    APP-NAME: The contents of the APP-NAME field from IETF draft draft-ietf-syslog-protocol(IETF草案draft-ietf-syslog-protocol中的APP-NAME域的内容)

    PROCID:  The contents of the PROCID field from IETF  draft  draft-ietf-syslog-protocol(IETF草案draft-ietf-syslog-protocol中的PROCID域的内容)

    MSGID: The  contents  of  the MSGID field from IETF draft draft-ietf-syslog-protocol(IETF草案draft-ietf-syslog-protocol中的MSGID域的内容)

    $NOW: The current date stamp in the format YYYY-MM-DD(格式为YYYY-MM-DD的当前时间戳)

    $YEAR:   The current year (4-digit)(当前的年:4位)

    $MONTH:  The current month (2-digit)(当前的月:2位)

    $DAY:   The current day of the month (2-digit)(当前的日:2位)

    $HOUR:   The current hour in military (24 hour) time (2-digit)(military time:即24小时时钟的同义词)

    $MINUTE: The current minute (2-digit)

    以一个$符号开始的属性称之为系统属性,这些并不是从消息中得到而是从内部生成。

    3、字符位置

    FromChar和toChar被用来建立子串。它们指定了需要拷贝的字符串中的偏移。偏移量从1开始,所以如果你要获得消息文本中的前两个字符,你可以使用下面的语法:: "%msg:1:2%"。如果你不希望制定from和to,但是你想要指定选项,你仍然要加上冒号。例如,如果你想将整个消息文本转化为小写,使用"%msg:::lowercase%"。如果你想要从一个位置开始截取知道最后,你可以将一个美元符号放在toChar的位置(例如%msg:10:$%,将会提取从10的位置到最后的子串)

    这里同样支持正则表达式,为了使用它们,你需要放置一个“R”在FromChar的位置。这个用来告诉rsyslog这里希望的是一个正则表达式而不是基于位置的提取。实际的正则表达式必须在toChar的为之提供。正则表达式必须以“--end”字符串结尾。它表示正则表达式的结尾但是并不成为它的部分。如果你使用正则表达式,属性替换将会返回属性文本中匹配正则表达式的部分。一个使用正则表达式的属性替换序列的示例为::"%msg:R:.*Sev:. \(.*\) \[.*--end%"

    同样,提取可以基于所谓的“fields”来实现。为了这样做,在FromChar的位置放置一个“F”。消息的当前定义的域就是由分隔符分开的各个部分,分隔符默认是TAB(US-ASCII的值为9)。但是,它可以改变为任何的US-ASCII字符通过在“F”后面直接加入一个逗号和一个分隔符的十进制US-ASCII的值。例如,使用逗号(“,”)作为一个分隔符,使用下面的指定方式:  "F,44"。如果你的syslog日志数据是被分割的,使用这种方式是比通过正则表达式更快的一种方式(实际上,是一种快得多的方式)。域的计数从1开始。域0可以被接受,但是通常导致一个“域找不到”的错误。相同的错误会发生在一个域号比域的个数要多的情况。域号放置在“ToChar”参数中,一个示例从msg属性中提取第三个域(TAB隔开)的方式如下:"%msg:F:3%"。相同的示例通过分号隔开的方式如下 "%msg:F,59:3%"。

    请注意特殊字符“F”和“R”是大小写敏感的。只有大写可以工作,小写将会导致错误。在序列(就是属性替换序列)中不允许有空格(这将会导致错误的消息并且无法得到想要的结果)

    4、属性选项:

    属性选项是大小写不敏感的,当前,下面的属性选项被定义:

    (1)、uppercase:将属性转化为小写;

    (2)、lowercase:将属性转化为大写;

    (3)、drop-last-lf:消息的最后的换行符LF(如果有的话)被丢弃,对于PIX特别有用(注:PIX是CISCO公司开发的防火墙系列设备,主要起到策略过滤,隔离内外网,根据用户实际需求设置DMZ(停火区));

    (4)、date-mysql:格式化为mysql数据

    (5)、date-rfc3164:格式化为RFC3164数据

    (6)、escape-cc:将控制字符(ASCII码值为127或者小于32)替换为一个转义序列。序列为"#<charval>",这这里charval是转义字符的3为十进制数。例如,制表符被替换为"#009"。

    (7)、space-cc:将控制字符替换为空格;

    (8)、drop-cc:丢弃控制字符-结果字符串将不包含控制字符,转义序列或者任何的替换字符例如空格。

11、队列操作(QUEUED OPERATIONS)

    Rsyslog支持队列操作来处理离线输入(例如远程的syslogd服务器或者数据库服务器关闭了)。当运行在队列模式下时,rsyslogd将消息缓存到内存并且可选地缓存到磁盘(根据需要)。队列
    强烈建议只在远程传送和数据库写操作的情况下使用队列模式。
    关于更多的队列操作,参见html文档。

12、文件:

    /etc/rsyslog.conf:rsyslogd的配置文件

13、相关:

    rsyslogd(8),logger(1),syslog(3)
    完整的文档可以在rsyslog发布版的doc文件夹下找到,也可以在线在 http://www.rsyslog.com/doc上找到。
    请注意man页仅仅反映了配置选项的一个子集。确保要去读html文档来获得全部的特性和细节。这对于你想搭建一个more-then-extremely-simple的系统是异常重要的。

14、作者:

    rsyslogd是从sysklogd源而来,它已经被Rainer Gerhards(rgerhards@adiscon.com)和其他人做了很大的改动。


本文来自centos 7.0.1046上的man rsyslog.conf中的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值