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)s33[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查看