python 类的继承
XNginxLog.py 注意:Python2 父类 XNginxLog(object) 必须要加object
import datetime, time import urlparse import re class XNginxLog(object): """ """ __IP = r"?P<ip>[\d.]*" __DATE = r"?P<date>\d+" __MONTH = r"?P<month>\w+" __YEAR = r"?P<year>\d+" __LOG_TIME = r"?P<time>\S+" __METHOD = r"?P<method>\S+" __REQUEST = r"?P<request>\S+" __STATUS = r"?P<status>\d+" __BODY_BYTES_SENT = r"?P<bodyBytesSent>\d+" __REFER = r"""?P<refer> [^\"]* """ __USER_AGENT = r"""?P<userAgent> .* """ __PATTERN = re.compile(r'(%s)\ -\ -\ \[(%s)/(%s)/(%s)\:(%s)\ [\S]+\]\ \"(%s)?[\s]?(%s)?.*?\"\ (%s)\ (%s)\ \"(%s)\"\ \"(%s).*?\"' % ( __IP, __DATE, __MONTH, __YEAR, __LOG_TIME, __METHOD, __REQUEST, __STATUS, __BODY_BYTES_SENT, __REFER, __USER_AGENT), re.VERBOSE) ip = None date = None month = None year = None log_time = None method = None request = None status = None bodyBytesSent = None refer = None userAgent = None def __init__(self, p_line=None): arr = re.findall(XNginxLog.__PATTERN, p_line)[0] self.ip = arr[0] self.date = arr[1] self.month = arr[2] self.year = arr[3] self.log_time = arr[4] self.method = arr[5] self.request = arr[6] self.status = arr[7] self.bodyBytesSent = arr[8] self.refer = arr[9] self.userAgent = arr[10] def get_query_dict(self): query = urlparse.urlparse(self.request).query return dict([(k, v[0]) for k, v in urlparse.parse_qs(query).items()])
XAdNginxLog.py
from common import XNginxLog class XAdNginxLog(XNginxLog): def __init__(self, p_line=None): #super(XAdNginxLog., self).__init__(p_line) super(XAdNginxLog, self).__init__(p_line) self.abc = 1 def has_the_same_device_id(self, p_nginx_log=None): v = self.get_query_dict().get('device_id') is not None and self.get_query_dict().get('device_id') == p_nginx_log.get_query_dict().get( 'device_id') return v def has_the_same_request_id(self, p_nginx_log=None): v = self.get_query_dict().get('request_id') is not None and self.get_query_dict().get('request_id') == p_nginx_log.get_query_dict().get( 'request_id') return v def is_xad_request(self): v = self.get_query_dict().get('channel_name', None) is not None and self.get_query_dict().get('version', None) is not None return v def is_xad_tracking(self): event_type = self.get_query_dict().get('event_type', None) v = event_type is not None and event_type.find('xad_') >= 0 return v
使用
log_obj = XAdNginxLog(p_line=line)
分类:
Python常用方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了