python 多线程日志切割+日志分析
python 多线程日志切割+日志分析
- 05/27. 2014
楼主最近刚刚接触python,还是个小菜鸟,没有学习python之前可以说楼主的shell已经算是可以了,但用shell很多东西实现起来还是不可能的事情,例如最明显的一点大日志分析,由于楼主的公司,每天的日志量很大,用shell分析的会非常非常的慢。
通过学习python,楼主有了一种想法,想法如下
可不可以分割日志,把日志分割成很多的小块,利用多线程去分析日志,这个难点在哪,难点就在如何去分割日志,前几篇文件楼主写过日志分割的python版,但是存在很大的弊端,只能够针对小日志进行分割,因为上一篇是把日志先写到列表中,大家都知道列表时要站内存的,那如果说日志很大,岂不一下就把内存吃满了。废话就不多说了,楼主来阐明下如何解决此问题
首先创建一个文本,文本内容如下
1
2
3
。
。
。
1000
1.计算出文本一行的大小比如说是4B
2.用服务器的总内存数除以4B 计算出我的服务器可以一次性分析多大的文件,这个数就是我一个文本应该为多少行,也就是说我切割的日志,一个文件是多少行
下面奉献出日志切割的脚本
#!/usr/bin/python
from time import ctime
def splitFile(fileLocation, targetFoler):
file_handler = open(fileLocation, ‘r’)
block_size = 100   (为我每个文件的行数)
line = file_handler.readline()
temp = []
countFile = 1
while line:
for i in range(block_size):
if i == (block_size-1):
# write block to small files
file_writer = open(targetFoler + “file_”+str(countFile)+”.txt”, ‘a+’)
file_writer.writelines(temp)
file_writer.close()
temp = []
print ”  file ” + str(countFile) + ” generated at: ” + str(ctime())
countFile = countFile + 1
else:
temp.append(file_handler.readline())
if countFile == 11:
break;
file_handler.close()
if __name__ == ‘__main__’:
print “Start At: ” + str(ctime())
splitFile(“/home/python/test.txt”, “/tmp/”)
分割完日志后,下面就该进行日志分析了
脚本如下
#!/usr/bin/python
import os
import re
import threading
def chaFile(path):
a=os.listdir(path)
for i in range(len(a)):
b=a[i]
c=open(“/home/python/rizhifenge.txt”,”a+”)
kk=”\n”+b
c.writelines(kk)
c.close()
d=open(“/home/python/rizhifenge.txt”,”r”)
f=d.read()
e=re.findall(“file.*”,f)
return e
d.close()
def chaZhao(path):
aa=open(path,”r+”)
bb=aa.read()
cc=re.search(“\d.”,bb)
if cc:
print cc.group()
aa.close()
if __name__ == “__main__”:
ff=”/tmp/”
for i in chaFile(ff):
gg=ff+i
a=threading.Thread(target=chaZhao,args=(gg,))
a.start()
python 多线程日志切割+日志分析的更多相关文章
- Python 多线程并发程序设计与分析
		多线程并发程序设计与分析 by:授客 QQ:1033553122 1.技术难点分析与总结 难点1:线程运行时,运行顺序不固定 难点2:同一段代码,再不加锁的情况下,可能被多个线程同时执行,这会造成很多 ... 
- tomcat日志切割和定期删除(转载)
		tomcat日志切割和定期删除 在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话).特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很 ... 
- tomcat日志切割和定期删除
		tomcat日志切割和定期删除 在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话).特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很 ... 
- Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间
		一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vho ... 
- 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
		对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ... 
- 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)(转)
		对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ... 
- 日常运维中的相关日志切割处理方法总结 [Logrotate、python、shell脚本实现 ]
		对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ... 
- Linux日志切割方法[Logrotate、python、shell实现方式]
		Linux日志切割方法[Logrotate.python.shell实现方式]  对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分 ... 
- python通过TimedRotatingFileHandler按时间切割日志
		通过TimedRotatingFileHandler按时间切割日志 线上跑了一个定时脚本,每天生成的日志文件都写在了一个文件中.但是日志信息不可能输出到单一的一个文件中. 原因有二:1.日志文件越来越 ... 
随机推荐
- 什么叫“回归”——“回归”名词的由来&&回归与拟合、分类的区别 && 回归分析
			http://blog.csdn.net/denghecsdn/article/details/77334160 
- 图学ES6-5.正则的扩展
- 【Java】 子字符串的比较(substring的==与equal()使用)
			public class Test { public static void main(String[] args) { String str1="good"; System.ou ... 
- Spring拦截器和过滤器
			什么是拦截器 拦截器(Interceptor): 用于在某个方法被访问之前进行拦截,然后在方法执行之前或之后加入某些操作,其实就是AOP的一种实现策略.它通过动态拦截Action调用的对象,允许开发者 ... 
- Redis客户端连接以及持久化数据(三)
			0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ... 
- mysql创建索引笔记
			1.添加PRIMARY KEY(主键索引.就是 唯一 且 不能为空.): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQU ... 
- 详解django三种文件下载方式
			推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如 ... 
- 在多线程中使用spring的bean
			由于spring在java开发中的广泛运用大大的方便了开发的同时,当运用一些技术比如多线程等 在由spring管理的配置文件中,可以通过封装spring提供工具,手动获得spring管理的bean,这 ... 
- BZOJ.4816.[SDOI2017]数字表格(莫比乌斯反演)
			题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 这个好像简单些啊,只要不犯sb错误 [Update] 真的算反演中比较裸的题了... \(Descriptio ... 
- myeclipse优化 Maven
			1.禁用myeclipse updating indexes MyEclipse 总是不停的在 Update index,研究发现Update index...是Maven在下载更新,但很是影响mye ... 
