楼主最近刚刚接触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 多线程日志切割+日志分析相关推荐

  1. python多线程怎么写日志_Python日志记录在多进程下的使用

    1. 问题描述 项目中,使用RotatingFileHandler根据日志文件大小来切分日志.设置文件的MaxBytes为1GB, backupCount大小为5. 经查看,发现日志文件的大小均小于1 ...

  2. python多进程log日志问题_Python 如何安全地实现实现多进程日志以及日志正常的分割...

    在Python中我们经常需要使用到多进程来提高我们程序性能,但是多进程的编程中经常有各种各样的问题来困扰我们,比如多进程和多线程的公用导致的子进程的卡死,进程间的通信等问题.还有一个问题我们也许不经常 ...

  3. python处理日志_python日志处理(logging模块)

    文章非原创,搬运自@云游道士博客: 另外,这篇文章可以作为参考: 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用 ...

  4. Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间...

    一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vho ...

  5. cat查看tomcat日志 linux_方法篇:tomcat日志切割和定期删除

    tomcat日志切割和定期删除 在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话).特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很 ...

  6. 访问日志不记录静态文件、访问日志切割、静态元素过期时间

    11.22 访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 小技巧: 打开浏览器,按键盘上的F12键,开发人员工具,选择Network选项(一般默认),刷 ...

  7. 4.16访问日志不记录静态文件,访问日志切割以及静态元素过期时间

    访问日志不记录静态文件 一个网站会有很多元素,尤其是图片.js.css等静态文件非常多,每个用户请求一个页面都会访问诸多的图片,这些元素都会被记录在日志中,如果一个网站访问量很大,那么这些日志会增长的 ...

  8. logrotate测试_日志切割之Logrotate

    1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...

  9. 切割日志 python版

    楼主之前一直用shell进行日志分析,但是日志过大,导致分析起来非常慢,楼主的思想是,把日志切割成n份,利用python多线程去分析岂不是快n多倍 #!/usr/bin/python file=ope ...

最新文章

  1. Arcgis mobile介绍
  2. Matlab程序咨询,书上程序4-5问题咨询
  3. 一个bug隐藏了另外一个bug,reloaddata,
  4. 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root
  5. Matlab | 数字信号处理:Matlab语言的基本使用方法(matlab代码版)
  6. C++_异常6-其他异常特性
  7. MyBatis】MyBatis一级缓存和二级缓存
  8. 如何修改可执行文件的图标
  9. 旋转卡壳 背诵用模板
  10. [转]一个程序员的哲学思考(关于编程、关于人生)
  11. rust自我解脱_自我解脱
  12. php strpbrk,PHP 字符串
  13. android gms包找不到,错误:包com.google.android.gms.appstate不存在
  14. 概率图模型之贝叶斯网络的理解与应用
  15. 研发项目wbs分解简单案例_wbs模板(wbs工作分解结构案例)
  16. JavaScrpit+Html实现“网页播放视频“效果(应用场景:腾讯PC端视频播放器、以及各视频网站页面开发设计)
  17. Worthington脱氧核糖核酸及相关研究工具
  18. 12306抢票算法居然被曝光了,居然这么简单
  19. 实战|使用python推送微信公众号消息(哄女友专用)
  20. win7计算机 管理缺失文件夹,win7电脑附件不见了怎么办-Win7找回附件文件夹的方法 - 河东软件园...

热门文章

  1. Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死
  2. nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
  3. ASP.Net中利用CSS实现多界面两法
  4. ATL::CStringA和std::string之间转换的一些误区
  5. Ubuntu14.04 64位机上安装cuda8.0+cudnn5.0操作步骤
  6. 【Qt】Qt再学习(七):QLocalServer、QLocalSocket
  7. html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器
  8. easypoi教程_EasyPoi教程
  9. python前端开发招聘_web前端和python学哪个出来工资高?
  10. python3.7版本_Centos7升级Python3.7.3版本