Python 实现单笔业务日志完整提取

#!/usr/bin/python

# -*- coding:utf-8 -*-

#auth kxr by 2019.9.12

import re

import os

import time

import cx_Oracle

print ‘############CBOSS测试环境日志提取脚本##########‘

print ‘##########仅支持当天的流水和网状网日志#########‘

print ‘####提取成功将在当前目录生成保存日志的文件#####‘

while True:

input1=raw_input("业务类型:(落地‘y‘,上发‘n‘):\n")

if any(input1 == i for i in [‘n‘,‘N‘]):

start_tag=‘准备开始处理请求‘

end_tag=[‘结束实时上发请求处理‘,‘实时上发CBOSS异常‘]

break

elif input1 in (‘y‘,‘Y‘) :

start_tag="Begin of HttpServletRequest"

end_tag=[‘落地业务受理过程中发生异常‘,‘End of HttpServletRequest‘]

break

else :  pass

while True:

input2=raw_input("唯一关键字(transido,opr_num,seq...):\n")

if input2:

key_word=input2.strip()

break

line_num=0

th_num=None

match=‘‘

f_log=[]

b_log=[]

c_log=[]

log_file=‘/app/aicboss/webapp/log/cboss_n2n.log‘

file=open(log_file,‘r‘)

while True:

line=file.readline()

line_num+=1

if key_word in line:

ofs=file.tell()

b_log.append(line)

file.seek(0)

match=re.search(r‘httpWorkerThread-[0-9]+-[0-9]+‘,line)

lines=file.readlines()[line_num-1000 if line_num-1000 > 0 else 0 :line_num-1][::-1]

if match:

th_num=match.group()

for sub_line in lines:

if th_num:

if start_tag  in sub_line:

f_log.append(sub_line)

break

elif th_num in sub_line:

f_log.extend(c_log)

c_log=[]

f_log.append(sub_line)

elif ‘httpWorkerThread‘ not in sub_line:

c_log.append(sub_line)

else:

c_log=[]

elif ‘httpWorkerThread‘  in sub_line:

match=re.search(r‘httpWorkerThread-[0-9]+-[0-9]+‘,sub_line)

th_num=match.group()

f_log.append(sub_line)

else:

f_log.append(sub_line)

file.seek(ofs,0)

tag=True

for sub_line in file:

if any(t in sub_line for t in end_tag):

b_log.append(sub_line)

break

elif th_num in sub_line:

b_log.append(sub_line)

tag=True

elif ‘httpWorkerThread‘ not in sub_line:

if  tag : b_log.append(sub_line)

else:tag=False

newf_name=key_word+‘.log‘

path=os.getcwd()

new_file=open(os.path.join(path,newf_name),‘w‘)

f_log.reverse()

new_file.writelines(f_log)

new_file.writelines(b_log)

file.close()

new_file.close()

print ‘log_ref complete ! \nbeging ref msg...‘

break

if not line :

print ‘file scan end !key_word no found !‘

break

‘‘‘

if ‘newf_name‘ in dir():

file=open(os.path.join(path,newf_name))

for line in file:

if ‘DoneCode‘ in line:

match=re.search(r‘DoneCode.*[0-9]+‘,line)

if match:

donecode=re.search(r‘[0-9]+‘,match.group()).group()

break

file.close()

if ‘donecode‘ in dir():

table_pos=time.strftime("%Y%m",time.localtime())

table_name=‘cboss.xml_info_‘+table_pos

conn = cx_Oracle.connect(‘YAXIN_CESHI/bqg776^*@ 172.16.9.29/yydbtest‘)

cursor = conn.cursor()

req_msg=[‘请求报文:‘]

rep_msg=[‘应答报文:‘]

msgf_name=key_word+‘.xml‘

sql="SELECT actioncode,xml_data from "+table_name+" where done_code=:done_code"

param=[donecode]

cursor.execute(sql,param)

rows = cursor.fetchall()

for row in rows:

if row[0]==0:

req_msg.append(row[1].read())

elif row[0]==1:

rep_msg.append(row[1].read())

else:pass

msg_file=open(os.path.join(path,msgf_name),‘w‘)

msg_file.writelines(map(lambda x :x+‘\n‘,req_msg))

msg_file.writelines(map(lambda x :x+‘\n‘,rep_msg))

msg_file.close()

cursor.close()

conn.close()

‘‘‘

if ‘newf_name‘ in dir():

print ‘日志文件已生成:%s‘%(newf_name)

#if ‘msgf_name‘ in dir():

#    print ‘报文文件已生成:%s‘%(msgf_name)

#172.16.9.29

时间: 2024-10-12 21:41:39

Python 实现单笔业务日志完整提取的相关文章

Python自动化打包业务和认证平台

/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */ /* Author: Nicolas Hery - http://nicolashery.com */ /* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */ /* Source: https://github.com/nicolahery/markdownpad-github */ /* RESET =====

Koala业务日志系统使用教程

2 使用教程 前提 成功创建Koala Project,并且勾选集成业务日志子系统. 步骤 1. 业务方法标注@MethodAlias 格式: @MethodAlias("业务方法别名") 业务方法 示例: @MethodAlias("savePersonInfo") public PersonInfo savePersonInfo(PersonInfo personInfo) { personInfo.save(); return personInfo; } 要求

生产环境业务日志的管理

生产环境,业务系统的日志包括业务自身逻辑的日志,中间件平台的日志,操作系统的日志等. 从性能考虑: 一般而言,业务自身的逻辑日志,应该配置为非debug和trace模式,这样减轻服务器的负担. 中间件平台的日志,尽量开启非debug和trace模式,减轻服务器负担. 如果业务系统遇到问题,需要详细的日志跟踪进行诊断,可以临时打开日志的debug/trace模式(级别),问题解决后,关闭debug/trace模式. 从安全考虑: 业务日志不应该包含客户或者企业.商家.供应商.合作伙伴的私有信息(敏

Koala业务日志系统设计说明

源代码:http://git.oschina.net/openkoala/koala koala-business子模块 模块划分 模块名 作用 koala-businesslog-api 业务日志系统的核心api koala-businesslog-impl 业务日志系统的koala的默认实现 koala-businesslog-web 业务日志系统web模块 koala-businesslog-acceptance-test 业务日志系统的集成测试,也是业务日志系统的 **范例**,实际使用

python分析apahce网站日志的例子

有关python实现apahce网站日志分析的方法. 应用到:shell与python数据交互.数据抓取,编码转换 #coding:utf-8 #!/usr/bin/python'''程序说明:apache access.log日志分析 分析访问网站IP 来源情况 日期:2014-01-06 17:01 author:gyh9711 程序说明:应用到:shell与python数据交互.数据抓取,编码转换'''import osimport jsonimport httplibimport cod

Koala业务日志系统手动集成

4 手动集成 1. 添加依赖 application层添加业务日志接口模块依赖 <dependency> <groupId>org.openkoala.businesslog</groupId> <artifactId>koala-businesslog-api</artifactId> <version>4.0.0</version> </dependency> web层添加业务日志实现模块依赖 <de

Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作中. 这个项目推出以后受到很大关注,因为开放源码,大家可以在现成源码基础上进一步开发.然而,Python3和Python2是有区别的,<Python即时网络爬虫项目: 内容提取器的定义> 一文的源码无法在Python2.7下使用,本文将发布一个Python2.7的内容提取器. 2.

Python中将打印输出导向日志文件

Python中将打印输出导向日志文件 a. 利用sys.stdout将print行导向到你定义的日志文件中,例如: import sys # make a copy of original stdout route stdout_backup = sys.stdout # define the log file that receives your log info log_file = open("message.log", "w") # redirect pri

python清除数据库错误日志

# coding=gbk from encodings import gbk import re import sys import  os import  pyodbc import traceback import decimal #连接数据库 conn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.43;DATABASE=master;UID=sa;PWD=passwd123!') # 获取cursor对象来进行操作 curs