`

使用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网络数据采集(代码)

    9. **爬虫伦理**:在进行数据采集时,应遵循网站的robots.txt协议,并尊重版权,避免对服务器造成过大负担,必要时应申请授权。 10. **异常处理与调试**:在编写爬虫过程中,错误和异常是常见现象,良好的错误处理...

    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脚本,可能是用来...

    xuexifzhu.zip

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics