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查看