参考地址:

http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html

rsyslog消息模板的定义规则

"%msg:1:2%" :
==》读取从pos从1到2的数据
"%msg:::lowercase%" :
==》将整个消息转换为小写
"%msg:10:$%" :
==》截取pos从10到最后的消息内容
"%msg:R:.*Sev:. \(.*\) \[.*–end%" :
==》取"*Sev:."和[.*之间内的所有内容

R,<regexp-type>,<submatch>,<nomatch>,<match-number>
regexp-type :
==》"BRE" (基本的正则表达式)或"ERE" (扩展的正则表达式)
0-9是标识submatch的,0标识所有内容,1-9标识相应序号的内容。(和shell类似,其实就是正则表达式中括号的用法)
==》如果相同的实例被匹配到,那么第一个匹配的是0,之后的匹配依次排列
nomatch
==》标识没有匹配到的时候写什么
实例:
%msg:R,ERE,1,FIELD:for (vlan[0-9]\*):--end%
%msg:R,ERE,1,FIELD,1:for (vlan[0-9]\*):--end%
"F,44" :
==》设置分隔符(用ACSII表示),针对分隔符,在引用时,0代表没找到,匹配的实例从1开始数
%msg:F,59:3% :
==》以分号为分隔符,提取第三个区域的内容
"%msg:F,59,5:3,9%" :
==》以分号为分隔符,从第5个子串中,提取3-6位的字符
"%msg:F,32+:2%" :
==》如果多个分隔符(比如:日志中有n个空格作为分割,那么可以添加一个+)

配置过程中的重要步骤:

module(load="imfile" PollingInterval="") #needs to be done just once

# File
input(type="imfile"
File="/path/to/file1"
Tag="tag1"
StateFile="statefile1"
Severity="error"
Facility="local7") action(type="omfwd" Target="192.168.0.1" Port="" Protocol="tcp" )

只需要配置输入的模块和输出的action即可;

配置的重点就在于过滤器和输出的格式:

当要截取输入日志内容的话,就需要用到过滤器,用到上面的正则表达式,例如:

$template BiglogFormatTest,"%timestamp% %fromhost-ip% %msg:32:$%\n"
if $programname == 'test-run' then @@192.168.15.161:;BiglogFormatTest

当用到数据库并且默认的格式不符合我们的要求的话,我们就需要另外定义:

$template tpl,”insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)”,SQL
*.* :ommysql:localhost,Syslog,rsyslog,;tpl

准备找一个可以收集日志并分析的软件,最后选定了rsyslog+LogAnalyzer;根据网上的配置说明,最后的结果类似于,先用rsyslog将日志写入mysql,然后loganalyzer搜索mysql得到结果;
analyzer的设置就是配置一个数据库,没有可操作的余地;
rsyslog分为输入、预处理、解析过滤、输出等几个部分,输入输出只能指定来源和去向,针对数据的操作只能在filter中寻求方法。
其实就是定义一个正则表达式,将过滤后的内容,根据配置的原则放到指定的输出端。传统的配置文件不能定义变量,意味着rsyslog只能用于截取日志和选择出口。
当然为了适应花样百出的需求,新版的rsyslog都支持它自己定义的RainerScript,可能会更加灵活。

相关的推荐(日志的运维与优化):http://network.51cto.com/art/201610/520295.htm

rsyslog的配置文件使用方法的更多相关文章

  1. jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法

    jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法 用系统属性System.getProperty("user.dir")获得执行命令的目录(网上 ...

  2. spark读取外部配置文件的方法

    spark读取外部配置文件的方法 spark-submit  --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...

  3. SpringBoot加载子模块配置文件的方法

    这两天开始学习SpringBoot框架,按照官方的文档,很轻易地就把单模块的项目启动了,但在使用maven搭建多模块的时候遇到了子模块配置文件没有加载的问题 项目架构是这样的 zero |-ws |- ...

  4. SpringBoot读取外部配置文件的方法

    SpringBoot读取外部配置文件的方法 Spring高级之注解@PropertySource详解(超详细) 1.@PropertySource(value = {"classpath:c ...

  5. C# 读写App.config配置文件的方法

    我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等.你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了Ap ...

  6. Thinkphp 解决写入配置文件的方法

    在/Application/Common/Common创建function.php,然后添加以下代码: <?php /** * [writeArr 写入配置文件方法] * @param [typ ...

  7. LR java Vuser 相关依赖JAR包,配置文件处置方法

    JAR包,配置文件依赖有两种处理方法 1.放到工程文件夹下(lr脚本目录),不支持负载机调用 2.F4  classpath设置加载jar包和配置文件的整个文件夹,麻烦些,但支持负载机调用(与http ...

  8. 将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素

    在.NET程序中,程序的配置文件默认都会放在程序根目录下的web.config(网站程序)或App.config(控制台等程序),在该配置文件中可以定义若干程序配置信息. 在此以网站程序为例,首先将下 ...

  9. java读取properties配置文件的方法

    app.properties mail.smtp.host=smtp.163.com mail.transport.protocol=smtp import java.io.InputStream; ...

随机推荐

  1. 项目Alpha冲刺——代码规范、冲刺任务与计划

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...

  2. codeforces 15C. Industrial Nim

    题目链接:http://codeforces.com/problemset/problem/15/C $NIM$游戏是次要的,直接异或石头堆就可以了,问题在于给出的石头堆的数量极多. 考虑利用异或的性 ...

  3. P1330 封锁阳光大学

    传送门 思路: 依题意可知,在图中的每一条边有且只有一个点被选中(阻止老曹刷街),那么就可以对其采取二分图染色,一条边中:一个点为黑色,另一个点为白色:如果一条边中的两个端点的颜色相同,则说明无解,输 ...

  4. pom中配置的仓库无效的问题

    今天在用spring cloud的时候发现,配置的pom仓库一直无效(官网要求2.0版本直接从指定仓库里下).于是上网搜索,发现(http://18810098265.iteye.com/blog/2 ...

  5. leetcode 29-> Divide Two Integers without using multiplication, division and mod operator

    class Solution(object): def divide(self, dividend, divisor): """ :type dividend: int ...

  6. Tp3.2 复合查询

    我们常常有这样的需求,比如搜索. 搜索出,标题,子标题,内容中包含某某关键字. 这就要and,or结合使用了. $where = ['is_show'=>1,'status'=>1]; / ...

  7. JavaSE习题 第九章 输入输出流

    问答题 1.如果准备读取一个文件的内容,应该使用FileInputStream还是FileOutputStream? FileInputStream 2.FileInputStream流的read() ...

  8. @@identity与SCOPE_IDENTITY的区别

    @@identity与SCOPE_IDENTITY的区别 共同点: SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值. 不同处:SCOPE_ID ...

  9. [转][c++][跨平台]c++跨平台开发小结

    转自:https://blog.csdn.net/dj0379/article/details/53577135 linux编程与windows编程的差异之处: 1. 文件与目录的大小写以及路径分隔符 ...

  10. DAY4 if、while和for

    一.if 判断 语法一: if 条件: # 以下是上一条if 的子代码块 print(子代码1) print(子代码2) print(子代码3) if 运行完之后会执行代码下方 上一缩进级 的代码块 ...