設定日誌的**:
#log_setup.py
import logging
def setup_log(name=__name__,filename=none):
logger = logging.getlogger(name)
logger.setlevel(level=logging.info)
formatter = logging.formatter(fmt='%(asctime)s-%(module)s-%(lineno)d-%(message)s', datefmt='%y/%m/%d %h:%m:%s')
stream_handler = logging.streamhandler()
stream_handler.setformatter(formatter)
#if not logger.hashandlers():
# logger.addhandler(stream_handler)
if filename:
file_handler = logging.filehandler(filename)
file_handler.setformatter(formatter)
logger.addhandler(file_handler)
return logger
呼叫日誌**:
#module1.py
from log_setup import setup_log
logger = setup_log()
info_logger = setup_log( filename='log/info_logger.log')
發現控制台日誌會列印兩次,檢視下資料又看了下**:
發現原因如下,我呼叫了兩次setup_log函式,但是沒有傳入name引數,所以導致生成的logger和info_logger是乙個例項,他倆位址相同,所以就相當於新增了兩次stream_handler,從而導致呼叫logger輸出日誌時控制台會輸出兩次。
解決方法:
呼叫log_setup是傳入不同的name就行了,或者再setup_log函式中用hashandlers方法做一下判斷。
logger = setup_log(__name__)
info_logger = setup_log(name='info', filename='log/info_logger.log')
python日誌等級 python 日誌輸出級別
import logging logging.basicconfig level logging.debug,format asctime s filename s line lineno d levelname s message s datefmt a,d b y h m s filename ...
python日誌輸出
import logging logger logging.getlogger 生成乙個日誌物件,內為日誌物件的名字,可以不帶,名字不給定就是root,一般給定名字,否則會把其他的日誌輸出也會列印到你的檔案裡。handler logging.filehandler log test.txt 生成乙個...
Python 日誌輸出
列印日誌是很多程式的重要需求,良好的日誌輸出可以幫我們更方便的檢測程式執行狀態。python標準庫提供了logging模組,讓我們也可以方便的在python中列印日誌。完整的使用方法可以參考標準庫文件。這裡做一下簡單介紹。日誌級別有如下幾種。當獲取根logger的時候,預設級別為notset,這樣會...