python 多线程日志切割+日志分析
楼主最近刚刚接触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()
转载于:https://blog.51cto.com/4249964/1368577
python 多线程日志切割+日志分析相关推荐
- python多线程怎么写日志_Python日志记录在多进程下的使用
1. 问题描述 项目中,使用RotatingFileHandler根据日志文件大小来切分日志.设置文件的MaxBytes为1GB, backupCount大小为5. 经查看,发现日志文件的大小均小于1 ...
- python多进程log日志问题_Python 如何安全地实现实现多进程日志以及日志正常的分割...
在Python中我们经常需要使用到多进程来提高我们程序性能,但是多进程的编程中经常有各种各样的问题来困扰我们,比如多进程和多线程的公用导致的子进程的卡死,进程间的通信等问题.还有一个问题我们也许不经常 ...
- python处理日志_python日志处理(logging模块)
文章非原创,搬运自@云游道士博客: 另外,这篇文章可以作为参考: 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用 ...
- Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间...
一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vho ...
- cat查看tomcat日志 linux_方法篇:tomcat日志切割和定期删除
tomcat日志切割和定期删除 在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话).特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很 ...
- 访问日志不记录静态文件、访问日志切割、静态元素过期时间
11.22 访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 小技巧: 打开浏览器,按键盘上的F12键,开发人员工具,选择Network选项(一般默认),刷 ...
- 4.16访问日志不记录静态文件,访问日志切割以及静态元素过期时间
访问日志不记录静态文件 一个网站会有很多元素,尤其是图片.js.css等静态文件非常多,每个用户请求一个页面都会访问诸多的图片,这些元素都会被记录在日志中,如果一个网站访问量很大,那么这些日志会增长的 ...
- logrotate测试_日志切割之Logrotate
1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...
- 切割日志 python版
楼主之前一直用shell进行日志分析,但是日志过大,导致分析起来非常慢,楼主的思想是,把日志切割成n份,利用python多线程去分析岂不是快n多倍 #!/usr/bin/python file=ope ...
最新文章
- Arcgis mobile介绍
- Matlab程序咨询,书上程序4-5问题咨询
- 一个bug隐藏了另外一个bug,reloaddata,
- 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root
- Matlab | 数字信号处理:Matlab语言的基本使用方法(matlab代码版)
- C++_异常6-其他异常特性
- MyBatis】MyBatis一级缓存和二级缓存
- 如何修改可执行文件的图标
- 旋转卡壳 背诵用模板
- [转]一个程序员的哲学思考(关于编程、关于人生)
- rust自我解脱_自我解脱
- php strpbrk,PHP 字符串
- android gms包找不到,错误:包com.google.android.gms.appstate不存在
- 概率图模型之贝叶斯网络的理解与应用
- 研发项目wbs分解简单案例_wbs模板(wbs工作分解结构案例)
- JavaScrpit+Html实现“网页播放视频“效果(应用场景:腾讯PC端视频播放器、以及各视频网站页面开发设计)
- Worthington脱氧核糖核酸及相关研究工具
- 12306抢票算法居然被曝光了,居然这么简单
- 实战|使用python推送微信公众号消息(哄女友专用)
- win7计算机 管理缺失文件夹,win7电脑附件不见了怎么办-Win7找回附件文件夹的方法 - 河东软件园...
热门文章
- Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死
- nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
- ASP.Net中利用CSS实现多界面两法
- ATL::CStringA和std::string之间转换的一些误区
- Ubuntu14.04 64位机上安装cuda8.0+cudnn5.0操作步骤
- 【Qt】Qt再学习(七):QLocalServer、QLocalSocket
- html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器
- easypoi教程_EasyPoi教程
- python前端开发招聘_web前端和python学哪个出来工资高?
- python3.7版本_Centos7升级Python3.7.3版本