2007年03月22日 星期四 09:58
*nix下面都有一个tail的命令,用来从尾部查看文件的。 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? 而且,每个log文件可能大到几十M的。
2007年03月22日 星期四 10:11
On 3/22/07, 马踏飞燕 <honeyday.mj在gmail.com> wrote: > > *nix下面都有一个tail的命令,用来从尾部查看文件的。 > > 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? > 而且,每个log文件可能大到几十M的。 > 不可以先看一下所有log文件的timestamp,有更新的再打开么? 还有打开文件应该可以用memory map的方式,只读最后一段 -- simple is good http://brucewang.net skype: number5 -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070322/b51a00ce/attachment.html
2007年03月22日 星期四 10:35
tail ÃüÁîÓÐÒ»¸ö tail -f ²ÎÊý£¬µ±Îļþ±ä»¯µÄʱºò×Ô¶¯×·¼ÓÏÔʾ£¬¿´¿´Ô´ÂëÊÇÔõôʵÏÖµÄ -f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --fol- low=descriptor are equivalent ÔÚ07-3-22£¬Bruce Wang <number5在gmail.com> дµÀ£º > > > > On 3/22/07, Âí̤·ÉÑà <honeyday.mj在gmail.com> wrote: > > > > *nixÏÂÃ涼ÓÐÒ»¸ötailµÄÃüÁÓÃÀ´´Óβ²¿²é¿´ÎļþµÄ¡£ > > > > ÎÒÏÖÔÚÐèÒª¿ª¶à¸ölogÎļþ¶ÔÏóÀ´¶¯Ì¬µÄ¼à¿ØlogÎļþµÄ×îб仯£¬¿¼ÂǹýÓÃtimer£¬µ«ÊÇÿ¸ölogÎļþ¸üеÄʱ¼äÊDz»Ò»¶¨µÄ£¬ÕâÑùÒ»Ö±´ò¿ª¹Ø±ÕµÄ»á²»»áÔì³ÉЧÂʵÍÏÂÄØ£¿ > > ¶øÇÒ£¬Ã¿¸ölogÎļþ¿ÉÄÜ´óµ½¼¸Ê®MµÄ¡£ > > > > ²»¿ÉÒÔÏÈ¿´Ò»ÏÂËùÓÐlogÎļþµÄtimestamp£¬ÓиüеÄÔÙ´ò¿ªÃ´£¿ > > »¹Óдò¿ªÎļþÓ¦¸Ã¿ÉÒÔÓÃmemory mapµÄ·½Ê½£¬Ö»¶Á×îºóÒ»¶Î > > > -- > simple is good > http://brucewang.net > skype: number5 > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070322/64f20c2c/attachment.htm
2007年03月22日 星期四 10:48
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/414771 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/414771/index_txt '''Does tail -f on log files in a given directory. The display is in chronological order of the logged lines, given that the first column of log files is timestamp. It can be altered to fit other formats too''' 不知这个资料有不有帮助,我太菜了,只看得懂基本的,讨论得太深奥了,还要向大家多学习. -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070322/b9141d93/attachment.html
2007年03月22日 星期四 10:58
please see http://blog.chinaunix.net/u/22178/showart_148016.html tail.c 马踏飞燕 写道: > *nix下面都有一个tail的命令,用来从尾部查看文件的。 > 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? > 而且,每个log文件可能大到几十M的。 > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年03月22日 星期四 11:33
以前写过一个,不知道能否帮到你。 #!/usr/bin/env python #--*-- coding: utf-8 --*-- import os import sys import time """ 查看文件最后一行。 Author: weizi <nmweizi在gmail.com>, 2006 Usage: tailtest.py [file] """ class Tail: def __init__(self,inputstream): self.inputstream=inputstream self.inputstream.seek(0,2) def tail(self): #self.tell = self.inputstream.tell() line=self.inputstream.readline().strip() while line: print line line=self.inputstream.readline().strip() if __name__=="__main__": if len(sys.argv)<=1: print "You must type a log file name" sys.exit() arg=file(sys.argv[1]) t = Tail(arg) while(arg): try: time.sleep(2) t.tail() except KeyboardInterrupt: arg.close() print "File closed" sys.exit(1) -----邮件原件----- 发件人: python-chinese-bounces在lists.python.cn [mailto:python-chinese-bounces在lists.python.cn] 代表 IQDoctor 发送时间: 2007年3月22日 10:58 收件人: python-chinese在lists.python.cn 主题: Re: [python-chinese] 如何用python高效率的实现tail -f的功能? please see http://blog.chinaunix.net/u/22178/showart_148016.html tail.c 马踏飞燕 写道: > *nix下面都有一个tail的命令,用来从尾部查看文件的。 > 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? > 而且,每个log文件可能大到几十M的。 > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese _______________________________________________ python-chinese Post: send python-chinese在lists.python.cn Subscribe: send subscribe to python-chinese-request在lists.python.cn Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年03月22日 星期四 13:23
马踏飞燕 wrote: > *nix下面都有一个tail的命令,用来从尾部查看文件的。 > 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? > 而且,每个log文件可能大到几十M的。 FreeBSD中,可以使用kevent ("kqueue")机制来监测vnode的变化(可以同时看着多 个打开的vnode)。 具体的C实现可以参考: http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/forward.c?annotate=1.41 Python可以借助 py-kqueue (devel/py-kqueue) 调用 FreeBSD 的 kqueue 支持。 Cheers, -- Xin LI <delphij在delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve! -------------- 下一部分 -------------- 一个非文本附件被清除... 发信人: %(who)s 主题: %(subject)s 日期: %(date)s 大小: 249 Url: http://python.cn/pipermail/python-chinese/attachments/20070322/87f2f296/attachment.pgp
2007年03月22日 星期四 19:52
Linux很久就有了, 叫inotify python也有支持: python-pyinotify On 3/22/07, LI Xin <delphij在delphij.net> wrote: > 马踏飞燕 wrote: > > *nix下面都有一个tail的命令,用来从尾部查看文件的。 > > > 我现在需要开多个log文件对象来动态的监控log文件的最新变化,考虑过用timer,但是每个log文件更新的时间是不一定的,这样一直打开关闭的会不会造成效率低下呢? > > 而且,每个log文件可能大到几十M的。 > > FreeBSD中,可以使用kevent ("kqueue")机制来监测vnode的变化(可以同时看着多 > 个打开的vnode)。 > > 具体的C实现可以参考: > > http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/forward.c?annotate=1.41 > > Python可以借助 py-kqueue (devel/py-kqueue) 调用 FreeBSD 的 kqueue 支持。 > > Cheers, > -- > Xin LI <delphij在delphij.net> http://www.delphij.net/ > FreeBSD - The Power to Serve! > > -- LinuX Power
2007年03月22日 星期四 23:33
Marco wrote: > Linux很久就有了, 叫inotify > > python也有支持: > python-pyinotify 如果没记错,inotify这个接口应该是2004年出现的。晚了整整4年重新设计了一个 轮子,接口居然还只能支持"i"的操作(题外话,作为一个VFS层次的东西,它的名 字显然应该是"v"),我相信以他们的个性,这个KPI迟早还会再推倒重写,建议大 家等Linux Kernel 2.8的时候这个接口没人提出反对再决定是否使用。 Cheers, -- Xin LI <delphij在delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve! -------------- 下一部分 -------------- 一个非文本附件被清除... 发信人: %(who)s 主题: %(subject)s 日期: %(date)s 大小: 249 Url: http://python.cn/pipermail/python-chinese/attachments/20070322/52c37ee2/attachment.pgp
2007年03月23日 星期五 01:02
µÈµ½ÄÇʱºò½Ó¿Ú±äÁË, ÔÙ¸Ä×Ô¼ºµÄ´úÂëÒ²ÐÐѽ On 3/22/07, LI Xin <delphij在delphij.net> wrote: > > Marco wrote: > > LinuxºÜ¾Ã¾ÍÓÐÁË£¬ ½Ðinotify > > > > pythonÒ²ÓÐÖ§³Ö£º > > python-pyinotify > > Èç¹ûû¼Ç´í£¬inotifyÕâ¸ö½Ó¿ÚÓ¦¸ÃÊÇ2004Äê³öÏֵġ£ÍíÁËÕûÕû4ÄêÖØÐÂÉè¼ÆÁËÒ»¸ö > ÂÖ×Ó£¬½Ó¿Ú¾ÓÈ»»¹Ö»ÄÜÖ§³Ö"i"µÄ²Ù×÷£¨ÌâÍâ»°£¬×÷Ϊһ¸öVFS²ã´ÎµÄ¶«Î÷£¬ËüµÄÃû > ×ÖÏÔȻӦ¸ÃÊÇ"v"£©£¬ÎÒÏàÐÅÒÔËûÃǵĸöÐÔ£¬Õâ¸öKPI³ÙÔ绹»áÔÙÍƵ¹ÖØд£¬½¨Òé´ó > ¼ÒµÈLinux Kernel 2.8µÄʱºòÕâ¸ö½Ó¿ÚûÈËÌá³ö·´¶ÔÔÙ¾ö¶¨ÊÇ·ñʹÓᣠ> > Cheers, > -- > Xin LI <delphij在delphij.net> http://www.delphij.net/ > FreeBSD - The Power to Serve! > > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- Davies Liu My Blog: http://blog.daviesliu.net/ -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070323/da182316/attachment.html
2007年03月24日 星期六 00:24
在 07-3-22,weizi<nmweizi在163.com> 写道: > > 以前写过一个,不知道能否帮到你。 > > > #!/usr/bin/env python > #--*-- coding: utf-8 --*-- > import os > import sys > import time > > """ > 查看文件最后一行。 > Author: weizi <nmweizi在gmail.com>, 2006 > Usage: > tailtest.py [file] > > > """ > > class Tail: > def __init__(self,inputstream): > self.inputstream=inputstream > self.inputstream.seek(0,2) > > def tail(self): > #self.tell = self.inputstream.tell() > line=self.inputstream.readline().strip() > while line: > print line > line=self.inputstream.readline().strip() > > if __name__=="__main__": > if len(sys.argv)<=1: > print "You must type a log file name" > sys.exit() > arg=file(sys.argv[1]) > t = Tail(arg) > while(arg): > try: > time.sleep(2) > t.tail() > except KeyboardInterrupt: > arg.close() > print "File closed" > sys.exit(1) > > 谢谢! 不过我现在要分析的log文件可能一下子写入几十行的,如果只用计时器和最后以行的方式来读取的话很容易漏掉很多的行的。 我的想法是能否接获操作系统的事件,比如对该log文件的打开和写入的操作,接下来就用python来把它读出来。 再不行的话我就只能用一个外部的指针来标识当前读的行数,然后定时的从指针的位置读到尾部了。
2007年03月26日 星期一 09:41
这个程序可以支持多行。不会遗漏。 -----邮件原件----- 发件人: python-chinese-bounces在lists.python.cn [mailto:python-chinese-bounces在lists.python.cn] 代表 马踏飞燕 发送时间: 2007年3月24日 0:25 收件人: python-chinese在lists.python.cn 主题: Re: [python-chinese]答复: 如何用python高效率的实现tail -f的功能? 在 07-3-22,weizi<nmweizi在163.com> 写道: > > 以前写过一个,不知道能否帮到你。 > > > #!/usr/bin/env python > #--*-- coding: utf-8 --*-- > import os > import sys > import time > > """ > 查看文件最后一行。 > Author: weizi <nmweizi在gmail.com>, 2006 > Usage: > tailtest.py [file] > > > """ > > class Tail: > def __init__(self,inputstream): > self.inputstream=inputstream > self.inputstream.seek(0,2) > > def tail(self): > #self.tell = self.inputstream.tell() > line=self.inputstream.readline().strip() > while line: > print line > line=self.inputstream.readline().strip() > > if __name__=="__main__": > if len(sys.argv)<=1: > print "You must type a log file name" > sys.exit() > arg=file(sys.argv[1]) > t = Tail(arg) > while(arg): > try: > time.sleep(2) > t.tail() > except KeyboardInterrupt: > arg.close() > print "File closed" > sys.exit(1) > > 谢谢! 不过我现在要分析的log文件可能一下子写入几十行的,如果只用计时器和最后以行的方式来读取的话很容易漏掉很多的行的。 我的想法是能否接获操作系统的事件,比如对该log文件的打开和写入的操作,接下来就用python来把它读出来。 再不行的话我就只能用一个外部的指针来标识当前读的行数,然后定时的从指针的位置读到尾部了。 _______________________________________________ python-chinese Post: send python-chinese在lists.python.cn Subscribe: send subscribe to python-chinese-request在lists.python.cn Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn Detail Info: http://python.cn/mailman/listinfo/python-chinese
Zeuux © 2025
京ICP备05028076号