python日志
❶ 如何用python,每隔5分钟对实时日志做统计处理
不清楚你是不是用apache 举apache log+python
#!/usr/bin/envpython
fromthreadingimportTimer
importtime
timer_interval=3000
defreadlogs()
log="/var/log/httpd/access"
reader=open(log,'r')
contents=[]
forlineinreader.xreadlines():
p=re.compile('.*"GET(/seo/t.php?.*)HTTP/1.1".*',re.IGNORECASE)
m=p.match(line)
ifm:
res_file=m.group(1)
#printres_file
cs=urlparse.urlparse(res_file)
#cs_lem=len(cs)
#pprint.pprint(cs)
s_q=urlparse.parse_qs(cs.query,True)
ref=urlparse.urlparse(str(s_q['ref'][0]))
ref_wd=urlparse.parse_qs(ref.query,True)
printref_wd['wd'][0]
else:
contents.append(line)
reader.close()
returncontents
defparselog():
contents=readlogs()
foriincontents:
printi
t=Timer(timer_interval,parselog)
t.start()
whileTrue:
time.sleep(0.1)
print'mainrunning'
❷ 如何把数据写入日志里(python)
#coding=utf-8
def initlog():
import logging
# 生成一个日志对象
logger = logging.getLogger()
# 生成一个Handler。logging支持许多Handler,
# 象FileHandler, SocketHandler, SMTPHandler等,我由于要写
# 文件就使用了FileHandler。
# logfile是一个全局变量,它就是一个文件名,如:'crawl.log'
logfile = 'test.log'
hdlr = logging.FileHandler(logfile)
# 成一个格式器,用于规范日志的输出格式。如果没有这行代码,那么缺省的
# 格式就是:"%(message)s"。也就是写日志时,信息是什么日志中就是什么,
# 没有日期,没有信息级别等信息。logging支持许多种替换值,详细请看
# Formatter的文档说明。这里有三项:时间,信息级别,日志信息
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
# 将格式器设置到处理器上
hdlr.setFormatter(formatter)
# 将处理器加到日志对象上
logger.addHandler(hdlr)
# 设置日志信息输出的级别。logging提供多种级别的日志信息,如:NOTSET,
# DEBUG, INFO, WARNING, ERROR, CRITICAL等。每个级别都对应一个数值。
# 如果不执行此句,缺省为30(WARNING)。可以执行:logging.getLevelName
# (logger.getEffectiveLevel())来查看缺省的日志级别。日志对象对于不同
# 的级别信息提供不同的函数进行输出,如:info(), error(), debug()等。当
# 写入日志时,小于指定级别的信息将被忽略。因此为了输出想要的日志级别一定
# 要设置好此参数。这里我设为NOTSET(值为0),也就是想输出所有信息
logger.setLevel(logging.NOTSET)
return logger
logging=initlog()
logging.info(u'注册')
❸ python如何查看报错日志
test.py的39行,有个对象是个None?意思是你肯定有什么对象没有初始化就用了吧。
这个日志提示的信息意思最后一行NoneType,你还是查查你的test.py调用的方法是不是不对
你可以在IDLE下单步执行看看,环境变量是不是有些没有按照你想象的进行。
❹ python的日志,如何做到一天是单独一个日志,并且定期清理
创建以日期为文件的log文件(如:20140911.log),写日志前判断存放日志路径是否存在以当天日期为文件名的文件,如果存在添加日志信息,不存在就创建,在写日志信息。
定期清理亦可以按照此思路来做
❺ python里如何提取日志中的错误信息
只要进行提取日志中的错误信息,那么你可以编辑一段程序,然后这样的话才能够完成达到提取的。
❻ python 读取日志文件
#-*-coding:utf-8-*-
withopen('log.txt','r')asf:
foriinf:
ifdt.strftime(dt.now(),'%Y-%m-%d')ini:
#判断是否当天时间
if'ERROR'iniand'atcom.mytijian'ini:
#判断此行中是否含有'ERROR'及'atcom.mytijian'
if((dt.now()-dt.strptime(i.split(',')[0],'%Y-%m-%d%H:%M:%S')).seconds)<45*60:
#判断时间是为当前45分钟内
printi
❼ python打印日志,extra是什么意思
extra是用户自定义的dict. 这些key/value在格式化的时候可以直接引用。
extra可以用来传递额外的日志信息,尤其是上下文信息。
例如:
FORMAT='%(asctime)-15s%(clientip)s%(user)-8s%(message)s'
logging.basicConfig(format=FORMAT)
d={'clientip':'192.168.0.1','user':'fbloggs'}
logger=logging.getLogger('tcpserver')
logger.warning('Protocolproblem:%s','connectionreset',extra=d)
这里除了protocol错误描述外,还附加了客户IP和用户名信息。
如果配置了一些非文本格式的handler,结构化的数据会更容易存储和查询。
例如,Sentry的logging handler允许用户用extra.data来传递任意信息,并自动记录到web界面。
logger.error('Therewassomecrazyerror',exc_info=True,extra={
'culprit':'my.view.name',
'fingerprint':[...],
'data':{
#
'username':request.user.username,
}
})
❽ linux python 日志在哪
现在有test.py程序要后台部署, 里面有输出内容
使用命令:
nohup python -u test.py > test.log 2>&1 &
最后的&表示后台运行
2 输出错误信息到提示符窗口
1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
最后会把日志文件输出到test.log文件
查看
tail -f test.log如果要实时查看日志文件使用命令
cat test.log查看全部输出使用命令
❾ python2.7怎么控制日志的大小
importglob该实例可实现循环打日志 ,第一个文件达到maxBytes大小后,就写入第二个文件。
importlogging
importlogging.handlers
LOG_FILENAME='logging_rotatingfile_example.out'
#
my_logger=logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)
#
handler=logging.handlers.RotatingFileHandler(LOG_FILENAME,
maxBytes=20,
backupCount=5,
)
my_logger.addHandler(handler)
#Logsomemessages
foriinrange(20):
my_logger.debug('i=%d'%i)
#Seewhatfilesarecreated
logfiles=glob.glob('%s*'%LOG_FILENAME)
forfilenameinlogfiles:
printfilename
❿ python查看windows日志文件的代码
答使用Python自带的IDLE 在开始->程序->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI)。点击后弹出如下窗体: 1,在>>>提示符后输入代码,回车,就可以执行此代码。IDLE支持语法高亮,支持自动缩进,支持方法提示,不过提示的很慢。2.在命令行窗口上运行 这种方法的前提是:你在系统...