Initial YakPanel commit
This commit is contained in:
110
class/logsModel/siteModel.py
Normal file
110
class/logsModel/siteModel.py
Normal file
@@ -0,0 +1,110 @@
|
||||
#coding: utf-8
|
||||
#-------------------------------------------------------------------
|
||||
# YakPanel
|
||||
#-------------------------------------------------------------------
|
||||
# Copyright (c) 2015-2099 YakPanel(www.yakpanel.com) All rights reserved.
|
||||
#-------------------------------------------------------------------
|
||||
# Author: cjxin <bt_ahong@yakpanel.com>
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
#------------------------------
|
||||
# 面板日志类
|
||||
#------------------------------
|
||||
|
||||
import os,re,json,time
|
||||
from logsModel.base import logsBase
|
||||
import public,db
|
||||
from html import unescape,escape
|
||||
|
||||
class main(logsBase):
|
||||
|
||||
def __init__(self):
|
||||
self.serverType = public.get_webserver()
|
||||
|
||||
|
||||
def __get_iis_log_files(self,path):
|
||||
"""
|
||||
@name 获取IIS日志文件列表
|
||||
@param path 日志文件路径
|
||||
@return list
|
||||
"""
|
||||
file_list = []
|
||||
if os.path.exists(path):
|
||||
for filename in os.listdir(path):
|
||||
if filename.find('.log') == -1: continue
|
||||
file_list.append('{}/{}'.format(path,filename))
|
||||
|
||||
file_list = sorted(file_list,reverse=False)
|
||||
return file_list
|
||||
|
||||
def get_iis_logs(self,get):
|
||||
"""
|
||||
@name 获取IIS网站日志
|
||||
"""
|
||||
|
||||
p,limit,search = 1,2000,''
|
||||
if 'p' in get: limit = int(get.p)
|
||||
if 'limit' in get: limit = int(get.limit)
|
||||
if 'search' in get: search = get.search
|
||||
|
||||
import panelSite
|
||||
site_obj = panelSite.panelSite()
|
||||
data = site_obj.get_site_info(get.siteName)
|
||||
if not data:
|
||||
return public.returnMsg(False, public.lang("[{}] Failed to get the website path, please check whether IIS exists this site, does not exist, please delete this site in the panel after the creation.",get.siteName))
|
||||
|
||||
log_path = '{}/wwwlogs/W3SVC{}'.format(public.get_soft_path(), data['id'])
|
||||
file_list = self.__get_iis_log_files(log_path)
|
||||
|
||||
find_idx = 0
|
||||
log_list = []
|
||||
for log_path in file_list:
|
||||
if not os.path.exists(log_path): continue
|
||||
if len(log_list) >= limit: break
|
||||
|
||||
p_num = 0 #分页计数器
|
||||
next_file = False
|
||||
while not next_file:
|
||||
if len(log_list) >= limit:
|
||||
break
|
||||
p_num += 1
|
||||
result = self.GetNumLines(log_path,10001,p_num).split('\r\n')
|
||||
if len(result) < 10000:
|
||||
next_file = True
|
||||
|
||||
for _line in result:
|
||||
if not _line: continue
|
||||
if len(log_list) >= limit:
|
||||
break
|
||||
|
||||
try:
|
||||
if self.find_line_str(_line,search):
|
||||
find_idx += 1
|
||||
if find_idx > (p-1) * limit:
|
||||
info = escape(_line)
|
||||
log_list.append(info)
|
||||
except:pass
|
||||
return log_list
|
||||
|
||||
# 取网站日志
|
||||
def get_site_logs(self, get):
|
||||
logPath = ''
|
||||
if self.serverType == 'iis':
|
||||
return self.get_iis_logs(get)
|
||||
|
||||
elif self.serverType == 'apache':
|
||||
logPath = self.setupPath + '/wwwlogs/' + get.siteName + '-access.log'
|
||||
else:
|
||||
logPath = self.setupPath + '/wwwlogs/' + get.siteName + '.log'
|
||||
|
||||
data = {}
|
||||
data['path'] = ''
|
||||
data['path'] = os.path.dirname(logPath)
|
||||
if os.path.exists(logPath):
|
||||
data['status'] = True
|
||||
data['msg'] = public.GetNumLines(logPath, 1000)
|
||||
|
||||
return data
|
||||
data['status'] = False
|
||||
data['msg'] = 'log is empty'
|
||||
return data
|
||||
Reference in New Issue
Block a user