当前位置: 首页 > news >正文

怎样找到网站建设设置模板景区网站怎么做

怎样找到网站建设设置模板,景区网站怎么做,如何创建网站难吗,顺德网站建设方案1. 【工具类】正则表达式过滤器(过滤日志、过滤文件) 1. 【工具类】正则表达式过滤器(过滤日志、过滤文件) 1.1. 划重点1.2. 参数说明1.3. 正则表达式 regular.json 内容如下1.4. 举例1.5. 代码说明 1.1. 划重点 功能#xff1a; python实现的支持对文件进行正则表达式过滤…1. 【工具类】正则表达式过滤器(过滤日志、过滤文件) 1. 【工具类】正则表达式过滤器(过滤日志、过滤文件) 1.1. 划重点1.2. 参数说明1.3. 正则表达式 regular.json 内容如下1.4. 举例1.5. 代码说明 1.1. 划重点 功能 python实现的支持对文件进行正则表达式过滤不同的过滤模板维护不同的正则表达式文件即可方便跨平台通用 编写自己的正则表达式主要填写 regexp 字段并保存为 regular.json 文件格式如下 [ {id: ,regexp: .*hello world.*,ignore:0,add:,time_id:}, {id: ,regexp: ^my name is knowledgebao.*,ignore:0,add:,time_id:} ]将下边python代码保存为 filter_file.py 文件准备要过滤的文件 test.log执行 python3 filter_file.py -i test.log -r regular.json -o output.log 其中 output.log 是过滤后的文件 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import re import argparse import os import logging import json import uuid from datetime import datetimelogging.basicConfig(format[%(asctime)s.%(msecs)03d] [%(levelname).1s] [%(filename)s:%(lineno)d] %(message)s,datefmt%Y-%m-%d %H:%M:%S) logger logging.getLogger(__name__)# 日志级别设置 def set_log_level(level):log_levels {0: logging.DEBUG,1: logging.INFO,2: logging.WARNING,3: logging.ERROR,4: logging.CRITICAL}if level in log_levels:logger.setLevel(log_levels[level])# 正则表达式解析结构体对应 json 文件中的一条记录 class regexp_info:def __init__(self):self.id None # self.ignore None # self.add None # 额外添加在日志前边的字符串self.regexp_text None # 原始正则表达式内容self.regexp None # 编译后的正则表达式句柄self.time_id None # self.time Nonedef __str__(self) - str:return fid: {self.id}, ignore: {self.ignore}, add: {self.add}, time_id: {self.time_id} regexp: {self.regexp_text}# 常用正则表达式 class regexp_utils:# [15:48;00.224][I][0411 15:46:57.447] log infopattern_time1 re.compile(r^\[\d{2}:\d{2};\d{2}\.\d{3}\]\[.\]\[(\d{4} \d{2}:\d{2}:\d{2}\.\d{3})\])# [E][0410 21:44:07.514][xxx][xxx] loginpattern_time2 re.compile(r^\[.\]\[(\d{4} \d{2}:\d{2}:\d{2}\.\d{3})\])# 日志解析类过滤日志文件 class filter_file:def __init__(self):self.regexps {} self.pattern_time regexp_utils.pattern_time1self.f Noneself.all_line 0self.process_line 0self.valid_line 0# 解析正则表达式def parse_regexp(self, regexp_path, regexp_list, output):if regexp_path and os.path.exists(regexp_path):with open(regexp_path, r) as f:data json.load(f)for val in data:info regexp_info()info.id val.get(id)info.ignore val.get(ignore)info.add val.get(add) # .replace(\\n, \n).replace(\\t, \t)info.regexp_text val.get(regexp)if info.regexp_text is None or info.regexp_text :continuetry:info.regexp re.compile(info.regexp_text)except Exception as e:logger.error(fregexp: {info.regexp_text} error: {e})raise einfo.time_id val.get(time_id)self.regexps[info.id] infologger.info(f{info})if regexp_list:for regexp in regexp_list:if regexp is None or regexp :continueinfo regexp_info()info.id uuid.uuid4().hexinfo.regexp_text .*regexp.*try:info.regexp re.compile(info.regexp_text)except Exception as e:logger.error(fregexp: {info.regexp_text} error: {e})raise eself.regexps[info.id] infologger.info(f{info})if output:self.f open(output, w)def __write_file(self, text):if self.f and text and text ! :self.f.write(text)# return t1-t2def __get_time_delta(self, t1, t2):if t1 is None or t2 is None:return Noneif not (isinstance(t1, datetime) and isinstance(t2, datetime)):return Nonedelta_time str(t1 - t2)if len(delta_time) 14:delta_time .delta_time 0 * (14-len(delta_time))delta_time _return delta_timedef __process_time(self, line, regexp):time Nonedate_time self.pattern_time.findall(line)if len(date_time) 0:time datetime.strptime(date_time[0], %m%d %H:%M:%S.%f)if regexp.time_id and regexp.time_id in self.regexps and self.regexps[regexp.time_id].time:delta self.__get_time_delta(time, self.regexps[regexp.time_id].time)logger.debug(f{delta}, {time}, {self.regexps[regexp.time_id].time})self.__write_file(delta)return timedef __parse_line(self, line):self.valid_line 1# logger.debug(fbeg process: {line})for regexp in self.regexps.values():# logger.debug(fregexp: {regexp})if regexp.ignore or regexp.regexp is None or regexp.regexp_text :continueif regexp.regexp.search(line):logger.debug(f{regexp.id}: {line})if self.f:# 打印额外信息self.__write_file(regexp.add)# 获取和打印时间差regexp.time self.__process_time(line, regexp)# 打印日志内容self.__write_file(line)self.process_line 1breakdef parses(self, file_path):for line in open(file_path, rb):self.all_line 1try:line line.decode(utf8,errorsreplace)if line and line ! :self.__parse_line(line)except Exception as e:logger.warning(fparse lines {self.all_line} failed: {e})# if self.all_line 10: # for test# breakdef print_result(self):logger.info(fall line: {self.all_line}, decode line: {self.valid_line}, process line: {self.process_line})if __name__ __main__:parser argparse.ArgumentParser()parser.description please enter correct paraparser.add_argument(-i, --file, helplog file, typestr)parser.add_argument(-r, --regular_file, helpregular json file, typestr)parser.add_argument(-rl, --regular_list, helpregular text, support many, typestr, nargs)parser.add_argument(-o, --output, helplog output file, typestr, defaultoutput.log)parser.add_argument(-l, --log_level, help0-4, debug,info,warning,error,critical, typeint, default1)args parser.parse_args()logger.info(flog level {args.log_level})logger.info(finput file {args.file})logger.info(foutput file {args.output})logger.info(fregular file {args.regular_file})logger.info(fregular_list {args.regular_list})set_log_level(args.log_level)if not os.path.exists(args.file):logger.error(finput log file {args.file} not exist)exit(1)log_process filter_file()try:log_process.parse_regexp(args.regular_file, args.regular_list, args.output)logger.info(fbegin parse {args.file})logger.info(f)log_process.parses(args.file)log_process.print_result()except Exception as e:logger.error(fparse log file {args.file} failed: {e})1.2. 参数说明 ➜ python filter_file.py --help usage: filter_file.py [-h] [-i FILE] [-r REGULAR_FILE] [-rl REGULAR_LIST [REGULAR_LIST ...]] [-o OUTPUT] [-l LOG_LEVEL]please enter correct paraoptional arguments:-h, --help show this help message and exit-i FILE, --file FILE log file-r REGULAR_FILE, --regular_file REGULAR_FILE regular json file-rl REGULAR_LIST [REGULAR_LIST ...], --regular_list REGULAR_LIST [REGULAR_LIST ...] regular text, support many-o OUTPUT, --output OUTPUT log output file-l LOG_LEVEL, --log_level LOG_LEVEL 0-4, debug,info,warning,error,critical-i 原始待处理文件-r regular_file指定正则表达式文件-rl regular_list, 指定正则表达式字符串可以指定多个, 与 -r 类似直接命令行输入正则表达式-o 指定输出文件默认是 output.log-l 日志级别默认是info 1.3. 正则表达式 regular.json 内容如下 [ {id: xxx,regexp: xxxx,ignore:0,add:,time_id:} ]id 用来定义唯一标识可用来关联其他条目目前可以计算时间差regexp 是正则表达式用于过滤有效日志ignore 表示是否忽略该行0表示不忽略1表示忽略add 表示添加的字符串比如添加换行符添加在对应日志的前边time_id 表示与哪个 id 关联目前主要是用来计算时间差 1.4. 举例 举例 python3 filter_file.py -i test.log -o output.log -r regular.json reqular.json 内容如下 [ {id: 001,regexp: .*0000000000000.*,ignore:0,add:\n,time_id:}, {id: 002,regexp: .*222222222.*,ignore:0,add:,time_id:}, {id: 003,regexp: .*333333333.*,ignore:0,add:,time_id:001}, {id: 004,regexp: .*555555555.*,ignore:0,add:,time_id:}, {id: 005,regexp: .*777777777.*,ignore:1,add:,time_id:}, {id: 006,regexp: .*999999999.*,ignore:0,add:,time_id:001} ]test.log 内容如下 [15:47;28.931][D][0411 15:43:21.040] log 0000000000000 ppfejf [15:47;28.931][W][0411 15:43:21.040] log 1111111111111ppfejf [15:47;28.931][I][0411 15:43:22.040] log 2222222222222ppfejf [15:47;28.931][E][0411 15:43:23.040] log 33333333333333ppfejf [15:47;28.931][D][0411 15:43:24.040] log 444444444444444ppfejf [15:47;28.931][W][0411 15:43:24.040] log 555555555555555ppfejf [15:47;28.931][I][0411 15:43:24.040] log 666666666666666fejf [15:47;28.931][E][0411 15:43:24.040] log 3333333333333ppfejf [15:47;28.931][D][0411 15:43:24.040] log 7777777777777777ppfejf [15:47;28.931][W][0411 15:43:24.040] log 3333333333333ppfejf [15:47;28.931][I][0411 15:43:24.040] log 888888888888888ppfejf [15:47;28.931][E][0411 15:43:24.040] log 999999999999999ppfejf [15:47;28.931][E][0411 15:43:24.040] log 3333333333333ppfejfoutput.log 输出结果如下 [15:47;28.931][D][0411 15:43:21.040] log 0000000000000 ppfejf [15:47;28.931][I][0411 15:43:22.040] log 2222222222222ppfejf 0:00:02.000000_[15:47;28.931][E][0411 15:43:23.040] log 33333333333333ppfejf [15:47;28.931][W][0411 15:43:24.040] log 555555555555555ppfejf 0:00:03.000000_[15:47;28.931][E][0411 15:43:24.040] log 3333333333333ppfejf 0:00:03.000000_[15:47;28.931][W][0411 15:43:24.040] log 3333333333333ppfejf 0:00:03.000000_[15:47;28.931][E][0411 15:43:24.040] log 999999999999999ppfejf 0:00:03.000000_[15:47;28.931][E][0411 15:43:24.040] log 3333333333333ppfejf1.5. 代码说明 set_log_level 用来设置日志级别regexp_info 类用来解析正则表达式regexp_utils 类常用正则表达式比如解析获取文本中的时间等filter_file 类用来解析正则表达式读文件过滤每一行还可以计算时间差
http://www.zqtcl.cn/news/755001/

相关文章:

  • PHP套模板做网站建设银行保定分行网站
  • 怎样免费注册网站域名wordpress网站回调域
  • 东莞个人免费建网站乐清网约车事件
  • 备案查询网站网站的登录弹窗怎么做
  • 网站开发 mvc北京建设工程主管部门网站
  • 淮安建设机械网站制作代理公司注册需要多少钱
  • 站长收录茌平建设局网站
  • 如何进行网站开发开发区人才
  • 网站制作 视频网站维护的主要内容包括
  • 快速企业建站深圳网站关键词优化推广
  • 如何开网店详细步骤东莞市网络seo推广
  • 个人可以做哪些有意思的网站网站和网站的app
  • 北京高端网站开发公司网站建设后台实训体会
  • 青岛海川建设集团有限公司网站wordpress 变私有云
  • 网站备案人可以改吗石大网页设计与网站建设客观题
  • 宁波网站优化方案免费关键词挖掘工具
  • 网站制作想法免费做效果图网站
  • 晓风彩票网站建设软件微信上发的链接网站怎么做的
  • 关键词有哪几种台州优秀关键词优化
  • 盐田区住房和建设局网站软件开发文档怎么编写
  • 网站响应式建设seo排名优化怎样
  • 山东 网站备案德清县建设局网站
  • 中英语双语网站咋做提供网站建设设计外包
  • 云网站功能江门网站seo关键词排名优化
  • 潍坊网站建设外贸制作html网站
  • 网站友情链接怎么添加定制酒营销方案
  • 目前最流行网站开发软件泰州市建设工程招标网
  • 福州网站优化me域名网站
  • 网站 案例互联网外包公司值得去吗
  • 做医疗护具网站浙江立鹏建设有限公司网站