- 论坛徽章:
- 0
|
我应用于监视tomcat\logs目录下面所有log
def CheckLogs(path, interval=600, lock = None):
"""
path 字符串,所监视的目录 tomcat\logs
interval, 数字,多长时间检查一次
lock, threading.lock类型, 用于多线程时同一时间段仅允许单个线程访问文件
"""
fileMap = {}
tr = re.compile(r'([eE]xception)')
#找exception的正则表达式
trFile = re.compile(r'(-0.log|catelina.err)$')
#想找什么文件名
while 1:
if lock:
lock.acquire()
dirList=os.listdir(path)
for fname in dirList:
if len(trFile.findall(fname)) == 0:
continue
tf = open(path + fname, 'r')
if fname in fileMap:
tf.seek(fileMap[fname])
ts = tf.read()
tl = tr.findall(ts)
if len(tl):
print '[LOG]find ' + str(len(tl)) + ' exception(s) in: ' + fname
fileMap[fname] = tf.tell()
else:
ts = tf.read()
tl = re.findall(tr, ts)
if len(tl):
print '[LOG]find ' + str(len(tl)) + ' exception(s) in: ' + fname
fileMap[fname] = tf.tell()
tf.close()
if lock:
lock.release()
time.sleep(interval)
我在windows平台下运行通过
希望能够对大家有用,如果有问题也请大家指出 |
|