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

喜满堂网站建设做网站得每年续费吗

喜满堂网站建设,做网站得每年续费吗,51空间,四川成都私人网站建设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.pierceye.com/news/837822/

相关文章:

  • 可以做音基题的音乐网站上海网站设计公司有哪些
  • 昆明做网站公司做家居的网站
  • 网站建设首选易网宣软文代发
  • 手机版网站开发用什么语言自己建设的网站怎么赚钱
  • 宁波建设监理协会网站软件开发文档的作用
  • 兰州电商平台网站建设网路神做网站怎么样
  • 诸城易讯网站建设服务中心网址的域名
  • 制作商务网站应用公园制作app软件下载
  • 情头定制网站被称为网站开发神器
  • 宝安网站设计案例淘宝页面制作
  • 天津品牌网站制作怎样建设网站流程
  • 怎样进行公司网站建设wordpress主题公司
  • 外宣做网站宣传网站功能描述
  • 部队网站建设多少钱营销自己的网站
  • 长春市城乡建设部网站南昌诚推网络技术有限公司
  • 网站 建设 欢迎你濮阳家电网站建设
  • 怎么快速建立一个网站如何用腾讯云服务器搭建wordpress
  • 五屏网站建设多少钱深圳网站公司有哪些
  • 莆田网站建站wordpress cd
  • 软件下载安装免费南京seo关键词优化服务
  • 广州网站设计软件建设将网站加入受信网站再试
  • 淘宝联盟网站备案常见的互联网应用
  • 自己做网站 搜索功能开发企业综合信息服务平台
  • 意大利语网站建设wordpress主题首页显示不全
  • 模板网站免费下载wordpress启用静态
  • 保定网站建设哪家好网站建设实践报告3000字
  • 网站制作项目执行免费制作微网站
  • 西安网站制作费用网站建设小程序开发报价
  • 深圳做针织衫服装的网站软件开发工具手机版
  • 网站域名注册的相关证书证明文件最珠海app