参考地址:

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. PHPsession工作机制以及销毁session

  2. sprinf sprintf_s 的用法

    函数功能: 将数据格式化输出到字符串 函数原型: int sprintf( char *buffer, const char *format [,argument] ... ) 注意这里的buffer ...

  3. Python:ModuleNotFoundError: No module named 'windows'

    pymouse安装后,又出现了ModuleNotFoundError: No module named 'windows'的错误 解决: 下载安装pyhook:http://www.lfd.uci.e ...

  4. 【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息

    1.http://blog.csdn.net/morewindows/article/details/6702342 在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享 ...

  5. 《剑指offer》第六十二题(圆圈中最后剩下的数字)

    // 面试题62:圆圈中最后剩下的数字 // 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里 // 删除第m个数字.求出这个圆圈里剩下的最后一个数字. #inclu ...

  6. python3+虹软2.0 离线人脸识别 demo

    python3+虹软2.0的所有功能整合测试完成,并对虹软所有功能进行了封装,现提供demo主要功能,1.人脸识别2.人脸特征提取3.特征比对4.特征数据存储与比对其他特征没有添加 虹软SDK下载戳这 ...

  7. h5调用手机相册摄像头以及文件夹

    在之前一家公司的时候要做一个app里面有上传头像的功能,当时研究了好久,找到了一篇文章关于h5摄像头以及相册的调用的,所以就解决了这个问题了!!我这里记录一下以便后面有人需要,可以参考一下!!!! 下 ...

  8. nodejs模拟http发送请求

    首先需要安装模块request,然后代码如下: //模拟发送http请求 var request = require("request"); //get请求 request('ht ...

  9. nodejs中function*、yield和Promise的示例

    var co = require("co"); var fs = require("fs"); function cusReadFile(fileName) { ...

  10. legend2---开发日志6(后端和前端如何相互配合(比如php,js,元素状态和数据改变))

    legend2---开发日志6(后端和前端如何相互配合(比如php,js,元素状态和数据改变)) 一.总结 一句话总结:php给元素初始状态,js根据这个状态做初始化和后续变化,使用vue真的很方便( ...