Python 重複輸出日誌 日誌列印兩次

2021-09-29 14:38:18 字數 1265 閱讀 1645

設定日誌的**: 

#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,這樣會...