本文整理汇总了Python中pygtail.Pygtail.readlines方法的典型用法代码示例。如果您正苦于以下问题:Python Pygtail.readlines方法的具体用法?Python Pygtail.readlines怎么用?Python Pygtail.readlines使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pygtail.Pygtail
的用法示例。
在下文中一共展示了Pygtail.readlines方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GroupingTail
# 需要导入模块: from pygtail import Pygtail [as 别名]
# 或者: from pygtail.Pygtail import readlines [as 别名]
class GroupingTail (object):
def __init__(self, filepath, groupby):
self.groupmatch = re.compile(groupby)
# write an offset file so that we start somewhat at the end of the file
self.offsetpath = "/tmp/" + str(uuid.uuid4())
#print self.offsetpath
try:
inode = os.stat(filepath).st_ino
offset = os.path.getsize(filepath) - 1024
#print inode
#print offset
except OSError:
pass
else:
if offset > 0:
#print 'write offset'
foffset = open(self.offsetpath, "w")
foffset.write ("%s\n%s" % (inode, offset))
foffset.close()
self.fin = Pygtail(filepath, offset_file=self.offsetpath, copytruncate=True)
#self.fin.readlines()
self.match_definitions = []
def update(self):
for line in self.fin.readlines():
#print 'line: %s' % line
mo = self.groupmatch.match(line)
if mo is not None and mo.groups():
groupname = mo.groups()[0].replace(".", "_").replace("-", "_")
for match in self.match_definitions:
instrument = match["instrument"]
instrument.write(groupname, line)
def add_match(self, instance_name, valuetype, instrument):
self.match_definitions.append(dict(
instance_name=instance_name,
valuetype=valuetype,
instrument=instrument
))
def read_metrics(self):
for match in self.match_definitions:
instance_name = match["instance_name"]
instrument = match["instrument"]
valuetype = match["valuetype"]
for groupname, value in instrument.read():
metric_name = "%s.%s" % (groupname, instance_name)
yield (metric_name, valuetype, value)
示例2: test_readlines
# 需要导入模块: from pygtail import Pygtail [as 别名]
# 或者: from pygtail.Pygtail import readlines [as 别名]
def test_readlines(self):
pygtail = Pygtail(self.logfile.name)
self.assertEqual(pygtail.readlines(), self.test_lines)
示例3: GroupingTail
# 需要导入模块: from pygtail import Pygtail [as 别名]
# 或者: from pygtail.Pygtail import readlines [as 别名]
class GroupingTail(object):
def __init__(self, filepath, groupby, groupname=None):
self.groupmatch = re.compile(groupby)
# write an offset file so that we start somewhat at the end of the file
# either filepath is a path or a syslogd url
(scheme, netloc, path, params, query, fragment) = urlparse.urlparse(filepath)
if scheme == 'syslog':
host, port = netloc.split(':')
self.fin = QueueFile()
self.server = SocketServer.UDPServer((host, int(port)), SyslogUDPHandler)
self.server.queue = self.fin
th = threading.Thread(target=lambda: self.server.serve_forever(poll_interval=0.5))
th.setDaemon(True)
th.start()
else:
# Create a temporal file with offset info
self.offsetpath = "/tmp/" + str(uuid.uuid4())
try:
inode = os.stat(filepath).st_ino
offset = os.path.getsize(filepath) - 1024
except OSError:
pass
else:
if offset > 0:
foffset = open(self.offsetpath, "w")
foffset.write("%s\n%s" % (inode, offset))
foffset.close()
self.fin = Pygtail(filepath, offset_file=self.offsetpath, copytruncate=True)
# List of matchings
self.match_definitions = []
# Regex group name for grouping
self.groupbygroup = groupname
def __del__(self):
if hasattr(self, 'server'):
self.server.socket.close()
# Update method processing last lines
def update(self):
for line in self.fin.readlines():
groupname = None
mo = self.groupmatch.match(line)
if mo is not None:
if self.groupbygroup is None and mo.groups():
# No groupbygroup get first group name
groupname = mo.groups()[0]
elif self.groupbygroup is not None:
# Get groupname from line
groupname = mo.groupdict().get(self.groupbygroup)
if groupname is not None:
# Normalize groupname
groupname = groupname.replace(".", "_").replace("-", "_")
# Check all possible matchings
for match in self.match_definitions:
instrument = match["instrument"]
instrument.write(groupname, line)
# Attatch match to groupingtail class
def add_match(self, instance_name, valuetype, instrument):
self.match_definitions.append(dict(
instance_name=instance_name,
valuetype=valuetype,
instrument=instrument
))
# Get stored values from instrument
def read_metrics(self):
# For all matchings
for match in self.match_definitions:
instance_name = match["instance_name"]
instrument = match["instrument"]
valuetype = match["valuetype"]
# Get metric info
for groupname, value in instrument.read():
# Construct grouping name for this metric value
metric_name = "%s*%s" % (groupname, instance_name)
# Send metric info
yield (metric_name, valuetype, value)
示例4: GroupingTail
# 需要导入模块: from pygtail import Pygtail [as 别名]
# 或者: from pygtail.Pygtail import readlines [as 别名]
class GroupingTail (object):
def __init__(self, filepath, groupby, groupname=None):
self.groupmatch = re.compile(groupby)
# write an offset file so that we start somewhat at the end of the file
# either filepath is a path or a syslogd url
(scheme, netloc, path, params, query, fragment) = urlparse.urlparse(filepath)
if scheme == 'syslog':
host, port = netloc.split(':')
self.fin = QueueFile()
self.server = SocketServer.UDPServer((host, int(port)), SyslogUDPHandler)
self.server.queue = self.fin
th = threading.Thread(target=lambda: self.server.serve_forever(poll_interval=0.5))
th.daemon = True
th.start()
else:
self.offsetpath = "/tmp/" + str(uuid.uuid4())
#print self.offsetpath
try:
inode = os.stat(filepath).st_ino
offset = os.path.getsize(filepath) - 1024
#print inode
#print offset
except OSError:
pass
else:
if offset > 0:
#print 'write offset'
foffset = open(self.offsetpath, "w")
foffset.write ("%s\n%s" % (inode, offset))
foffset.close()
self.fin = Pygtail(filepath, offset_file=self.offsetpath, copytruncate=True)
#self.fin.readlines()
self.match_definitions = []
self.groupbygroup = groupname
def __del__(self):
if hasattr(self, 'server'):
self.server.socket.close()
def update(self):
for line in self.fin.readlines():
#print 'line: %s' % line
groupname = None
mo = self.groupmatch.match(line)
if mo is not None:
if self.groupbygroup is None and mo.groups():
groupname = mo.groups()[0]
elif self.groupbygroup is not None:
groupname = mo.groupdict().get(self.groupbygroup)
if groupname is not None:
groupname = groupname.replace(".", "_").replace("-", "_")
for match in self.match_definitions:
instrument = match["instrument"]
instrument.write(groupname, line)
def add_match(self, instance_name, valuetype, instrument):
self.match_definitions.append(dict(
instance_name=instance_name,
valuetype=valuetype,
instrument=instrument
))
def read_metrics(self):
for match in self.match_definitions:
instance_name = match["instance_name"]
instrument = match["instrument"]
valuetype = match["valuetype"]
for groupname, value in instrument.read():
metric_name = "%s.%s" % (groupname, instance_name)
yield (metric_name, valuetype, value)