python中logging
⑴ python里的logging怎么写多个文件
an example:
#coding:utf-8
#filename:cfg/logger.yml
version:1
formatters:
simple:
format:'%(asctime)s-%(name)s-%(levelname)s-%(message)s'
consolefmt:
format:'%(name)s-%(levelname)s-%(message)s'
handlers:
console:
class:logging.StreamHandler
formatter:consolefmt
level:WARNING
stream:ext://sys.stdout
ownerloggerfile:
class:logging.handlers.RotatingFileHandler
formatter:simple
level:INFO
filename:log/billingcodeowner.log
maxBytes:1048576
backupCount:3
phnloggerfile:
class:logging.handlers.RotatingFileHandler
formatter:simple
level:INFO
filename:log/phnparser.log
maxBytes:1048576
backupCount:3
loggers:
billingcodeowner:
level:DEBUG
handlers:[ownerloggerfile]
propagate:no
phoneparser:
level:DEBUG
handlers:[console,phnloggerfile]
propagate:no
root:
level:DEBUG
handlers:[console,phnloggerfile]
usage in python application:
importlogging
importlogging.config
importcodecs
importyaml
logging.config.dictConfig(codecs.open("cfg/logger.yml",'r','utf-8').read())
logger=logging.getLogger("billingcodeowner")
⑵ python中使用logging模块在控制台打印日志的同时也打印log文件,但发现控制台的信息会出现重复打印
loggin模块需要进行很多封装才好用,你这种情况应该是初始化有问题,给你贴一段代码你自己照抄下来用用试试。
#-*-coding:UTF8-*-
#
importos
importlogging
classLogger(object):
'''
@summary:日志处理对象,对logging的封装
'''
def__init__(self,name='Logger'):
self.logger=logging.getLogger(name)
self.init_logger()
definit_logger(self):
self.logger.setLevel(logging.DEBUG)
#屏幕输出日志
stream=logging.StreamHandler()
stream.setLevel(logging.INFO)
#日志样式
fm_stream=logging.Formatter("[ 33[1;%(colorcode)sm%(levelname)s 33[0m%(asctime)s%(myfn)s:%(mylno)d:%(myfunc)s%(mymole)s]%(message)s","%m-%d%H:%M:%S")
stream.setFormatter(fm_stream)
self.logger.addHandler(stream)
defupdate_kwargs(self,kwargs,colorcode):
try:
fn,lno,func=self.logger.findCaller()
fn=os.path.basename(fn)
exceptExceptionasddd:
fn,lno,func="(unknownfile)",0,"(unknownfunction)"
ifnot"extra"inkwargs:
kwargs["extra"]={}
kwargs["extra"]["myfn"]=fn
kwargs["extra"]["mylno"]=lno
kwargs["extra"]["myfunc"]=func
kwargs["extra"]["colorcode"]=colorcode
kwargs["extra"]["mymole"]=""
defdebug(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"0")#原色
self.logger.debug(msg,*args,**kwargs)
definfo(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"32")#绿色
self.logger.info(msg,*args,**kwargs)
defwarning(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"33")#黄色
self.logger.warning(msg,*args,**kwargs)
deferror(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"31")#红色
self.logger.error(msg,*args,**kwargs)
defcritical(self,msg,*args,**kwargs):
self.update_kwargs(kwargs,"31")#红色
self.logger.critical(msg,*args,**kwargs)
使用方法:
fromloggerimportLogger
Logger().info('xxxxx')
Logger().warning('xxxxx')
Logger().error('xxxxx')
⑶ python logging怎么使用
import logging
然和设置日志的最低警告级别,显示方式,返回句柄
⑷ python logging 源文件在哪
首先,想到的是更改logging.basicConfig(filename=logfilename)参数,来实现变更日志文件名的目的。编写代码如下:
log_fmt = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
for i in range(1,4):
filename = str.format('mylog%d.txt' % i)
logging.basicConfig(format=log_fmt, level=logging.DEBUG, filename=filename)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')12345678
运行结果没有达到预期的效果,只有日志文件mylog1.txt被创建,mylog2.txt和mylog3.txt都未被创建,连续3次的输出的内容都写入mylog1.txt中。说明logging.basicConfig()设置属性具有全局性,第一次设置之后,之后再设置将不再生效。查看官方文档,也确实是如此。
⑸ python logging 问题
请参考我下面的代码以及对应的 log,看上去没有问题,我怀疑是 log config 的问题
importlogging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s%(filename)s[line:%(lineno)d]%(message)s',
datefmt='%a,%d%b%Y%H:%M:%S',
filename='log.log',
filemode='w')
classA:
def__init__(self):
logging.info('A')
__c=C()
__d=D()
classB:
def__init__(self):
logging.info('B')
classC:
def__init__(self):
logging.info('C')
__e=E()
__f=F()
classD:
def__init__(self):
logging.info('D')
classE:
def__init__(self):
logging.info('E')
classF:
def__init__(self):
logging.info('F')
if__name__=='__main__':
a=A()
b=B()
⑹ python 中 logging.info是干吗的
logging是python的日志库,是一个类
info是logging的一个属性
logging.info是输出日志的信息
logging.info('输出信息')
⑺ python logging怎么记录报错
基本范式是:
try:
do-something-block
except:
logger.exception("ExceptionLogged")
[python]viewplain
defsetLogger():
#创建一个logger,可以考虑如何将它封装
logger=logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
#创建一个handler,用于写入日志文件
fh=logging.FileHandler(os.path.join(os.getcwd(),'log.txt'))
fh.setLevel(logging.DEBUG)
#再创建一个handler,用于输出到控制台
ch=logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#定义handler的输出格式
formatter=logging.Formatter('%(asctime)s-%(mole)s.%(funcName)s.%(lineno)d-%(levelname)s-%(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch)
#记录一条日志
logger.info('helloworld,i'mloghelperinpython,mayihelpyou')
returnlogger#对单个表插入一个元组,其定义有
definsertOneData(conn,tableName,listColumn,lData):
try:
cursor=conn.cursor()
sql="insertinto"+tableName+"("
i=0
length=len(listColumn)
forcolumninlistColumn:
if(i!=(length-1)):
sql=sql+column+","
else:
sql=sql+column+")values("
i=i+1
foriinrange(0,length):
if(i!=(length-1)):
sql=sql+"%s,"
else:
sql=sql+"%s);"
logger.info(sql)
logger.info(lData)
cursor.execute(sql,lData);
conn.commit()
except:
logger.exception("ExceptionLogged")
日志的记录形式如下:
2012-04-30 22:29:39,173 - __init__.DataWithReplace.135 - ERROR - Exception Logged
Traceback (most recent call last):
File "C:Eclipse java EE workspaceReadExcel w_to_microblog\__init__.py", line 133, in DataWithReplace
insertOneData(newConn,newTbl,newColList,lData)
File "C:Eclipse java EE workspaceReadExcel w_to_microblog\__init__.py", line 156, in insertOneData
cursor.execute(sql,lData);
File "C:Python27libsite-packagesMySQLdbcursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "C:Python27libsite-packagesMySQLdbconnections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
IntegrityError: (1062, "Duplicate entry '95322' for key 'PRIMARY'")
⑻ python 中logging里面self什么意思
类的方法与普通的函数只有一个特别的区别--它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值.这个特别的变量指对象本身,按照惯例它的名称是self. 虽然你可以给这个参数任何名称
⑼ python的logging有什么用
|Python | 使用logging日志记录测试数据
http://jingyan..com/article/f71d6037a9ff151ab641d1c2.html
⑽ Python-requests中,这一段logging的用法是什么作用
每次打开python顶端会显示版本号 在程序中判断版本号可以通过import sys sys.version 在dos下可以通过python -V查看