`

使用RE进行日志采集

    博客分类:
  • Java
阅读更多

对于日志的采集,给出一个常规的思路:

 

执行采集日志应用(非web程序),使用文件流读取文本文件,当读取到文件末尾时,可以让当前线程睡眠一段时间,从而达到对日志采集的目的。

 

这样就会出现几个问题:

1、当应用异常终止时,重新启动,那样问题就来了:出现对日志的重复采集。

想了下,也没什么更好的办法,于是采集到的日志行数保存在一个文件中,当重新启动时,读取改文件对日志文件进行定位采集。

 

2、日志文件一般情况下并不是有规律的,需要更多的配置RE进行匹配。

下面介绍RE的常规用法:

比如有如下日志

Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 fd=9 ACCEPT from IP=192.168.0.1:4142 (IP=0.0.0.0:389)
Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 op=0 BIND dn="uid=elfinesh,ou=People,o=ethionet.et,o=etc" method=128
Mar  3 10:39:31 linux-c3xt slapd[4081]: perform_search: performing search in cn=elfinesh,cn=006,cn=testispusers,dc=sctel,dc=com,dc=cn, with filter (objectclass=*).
Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 op=0 BIND dn="uid=elfinesh,ou=People,o=ethionet.et,o=etc" mech=SIMPLE ssf=0
Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 op=0 RESULT tag=97 err=0 text=
Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 op=1 UNBIND
Mar  3 10:39:31 linux-c3xt slapd[4081]: conn=25 fd=9 closed

 

开始解析的RE:

(\\w+\\s+\\d+\\s+\\d{2}:\\d{2}:\\d{2})\\s+.+\\s+slapd+\\[\\d+\\]:\\s+conn=\\d+\\s+fd=\\d+\\s+ACCEPT\\s+from\\s+IP=.+

 

得到uid的RE:

\\w+\\s+\\d+\\s+\\d{2}:\\d{2}:\\d{2}\\s+.+\\s+slapd+\\[\\d+\\]:\\s+conn=\\d+\\s+op=\\d+\\s+BIND\\s+dn=\\\"uid=(\\w+),ou.+

 

得到返回结果的RE:

\\w+\\s+\\d+\\s+\\d{2}:\\d{2}:\\d{2}\\s+.+\\s+slapd+\\[\\d+\\]:\\s+conn=\\d+\\s+op=\\d+\\s+RESULT\\s+tag=\\d+\\s+err=(\\d+)\\s+.+

 

结束的RE:

\\w+\\s+\\d+\\s+\\d{2}:\\d{2}:\\d{2}\\s+.+\\s+slapd+\\[\\d+\\]:\\s+conn=\\d+\\s+fd=\\d+\\s+closed

 

 

 

使用的时候比较简单,比如定义的RE为re0

RE r = new RE(re0);
if (r.match(读取日志文件的一行)) {
String str= r.getParen(1); // 这样就可以获取括号里面的内容了
}

 

 

3、日志文件通常会限制大小,所以当日志文件会出现备份的情况,要考虑是否对备份日志文件的读取,如xx.log.1这种情况。

 

4、对于一些特殊情况,日志并不是孤立存在的,如存在请求日志和响应日志,需要对两个日志文件进行同步采集。另外,如果涉及到多系统(多IP采集),可以使用到线程池进行优化处理。

 

对于线程池的使用,后面再来整理。

分享到:
评论

相关推荐

    Python-对绝想日志网的说说进行爬取并存到mysql数据库

    本项目涉及的是使用Python3对“绝想日志网”的说说内容进行爬取,并将抓取到的数据存储到MySQL数据库中。在这个过程中,涉及到的关键技术包括正则表达式(re)、时间模块(time)、PyQuery库以及MySQL数据库操作。 ...

    stm32 AD采集经485发送PC显示

    STM32 AD采集经485发送PC显示的知识点涵盖了微控制器编程、模拟信号采集、数字通信协议以及数据处理...通过理解并掌握这些知识点,可以实现从STM32微控制器采集模拟信号并通过485通信网络发送到PC进行实时显示的功能。

    使用python采集脚本之家电子书资源并自动下载到本地的实例脚本

    Python具有丰富和强大的库,使用urllib,re等就可以轻松开发出一个网络信息采集器! 下面,是我写的一个实例脚本,用来采集某技术网站的特定栏目的所有电子书资源,并下载到本地保存! 软件运行截图如下: 在脚本...

    python代码爬取京东商品图片

    5. **日志记录**:使用`logging`库记录程序运行过程中的信息,便于调试和问题追踪。 以上是基于标题和描述推测的可能实现方式,实际的`crawler.py`和`test.py`文件可能会有更具体的实现细节和技术栈。对于初学者来...

    大数据项目开发实训.pdf

    在实际应用中,可能还需要用正则表达式(如Python的re模块)进行文本处理,以提取出有用信息。 4. **数据分析**:数据分析阶段通常使用统计方法和算法来发现数据中的模式、趋势和关联。在这个实训中,未指定具体的...

    各种python爬虫案例.zip

    10. **异常处理和日志记录**:编写爬虫时,要考虑到网络异常、编码问题等可能遇到的错误,使用try-except进行异常处理,并通过logging模块记录日志,便于调试和追踪问题。 11. **道德与法律法规**:爬虫在使用时...

    Python项目案例开发从入门到实战源代码第5章 爬虫应用——校园网搜索引擎

    10. **法律法规遵守**:在进行网络爬虫时,必须遵守相关法律法规,尊重网站的Robots协议,不进行非法数据采集。 通过本项目的实践,你将能够构建一个基本的校园网搜索引擎,掌握Python爬虫技术的核心概念和常用工具...

    TouTiao-master爬虫头条代码

    - API接口通常提供JSON格式的数据,需要使用`json`库进行解析。 - 需要注意API的调用限制,避免频繁请求导致IP被封。 5. **数据处理与存储**: - 数据清洗:去除无关信息,处理异常值。 - 数据结构:使用Python...

    python期末作业:批量爬取站长之家的网站排行榜数据并保存,数据分析可视化

    9. **网页解析与正则表达式**:如果网站数据结构复杂,可能需要结合正则表达式(re模块)进行更精确的数据匹配。 10. **遵守网络礼仪**:在爬取数据时,应尊重网站的robots.txt规则,避免过于频繁的请求,以免对...

    Python-EveryClass数据收集模块

    3. **正则表达式(RegEx)**:对于复杂的数据结构,Python的re模块可以进行模式匹配和数据提取,特别是对于非结构化的文本数据。 4. **JSON和XML处理**:许多API返回的数据格式为JSON或XML,Python有内置的json和...

    python爬取今日头条视频

    8. **多线程/异步请求**: 为了提高爬取效率,可以使用Python的threading或多进程库(如multiprocessing),或者使用异步IO库(如asyncio)进行并发请求。 请注意,爬取网站数据时必须遵守相关法律法规和网站的...

    爬取煎蛋网图片的简易爬虫程序(2021.6.28可用)

    本程序的实现主要基于Python的requests库进行网络请求,使用BeautifulSoup进行HTML解析,配合os和re库进行文件操作和正则表达式匹配,实现了对煎蛋网图片的自动化抓取。 首先,我们需要了解煎蛋网的图片URL的规律。...

    针对知乎的爬虫

    【知乎爬虫】是互联网数据抓取领域的一个具体实践,主要目标是对知乎网站上的信息进行自动化采集。爬虫技术在数据分析、市场研究、竞争情报等多个领域都有广泛应用。在这个项目中,我们将探讨如何使用Python编程语言...

    实验源码-bupt-tinyos.zip

    "screen.log"文件可能是实验过程中的日志记录,通过分析日志,学生可以了解程序运行状态,调试错误,从而提升对tinyOS运行机制的理解。 最后,"import re.py"、"analysis.py"和"test.py"是Python脚本,可能是用来...

    expect用法教程

    在这个例子中,我们使用了 `-re` 参数来指定正则表达式,这样可以在 `expect` 命令中使用正则表达式来匹配输出。如果当前用户的登录 shell 不是 `/bin/tcsh`,那么脚本将会发送 `/bin/tcsh` 来更改 shell;如果是,...

    xuexifzhu.zip

    "自动化学习软件"这个主题,通常涉及到的是使用编程技术,特别是Python语言,来实现教育或培训过程中的自动化任务。Python因其简洁易懂的语法和丰富的库支持,成为了自动化领域的首选语言之一。 首先,我们看到"21....

    Python数据抓取技术与实战.pdf

    它通常用于数据挖掘、信息采集和网页自动化。Python由于其简洁的语法和强大的库支持,在数据抓取领域中应用广泛。 2. Python抓取库选择: - requests库:用于发送HTTP请求,如GET、POST,是抓取网页的基本工具。 ...

    python爬虫实战,多线程爬取京东

    在当前互联网时代,网络爬虫技术被广泛应用于数据采集、数据分析等领域。本文介绍了一个基于Python的多线程爬虫项目,旨在爬取京东的商品列表页面以及商品详情页,并从中提取有价值的信息,包括页面数据和图片等资源...

    python入门到高级全栈工程师培训 第3期 附课件代码

    03 Pycharm的安装和使用 04 Python 运算符 05 Python 运算符以及总结 06 Python 基本数据类型介绍 07 Python 整形的魔法 08 Python 字符串的魔法 第11章 01 Python 字符串的魔法 02 Python range的用法以及练习 03...

Global site tag (gtag.js) - Google Analytics