您可以使用logging
模塊做到這一點。在你的一個基本模塊中定義這個函數,並在你想記錄的每個模塊中調用它。
import logging
def get_logger(name):
log_format = '%(asctime)s %(name)8s %(levelname)5s %(message)s'
logging.basicConfig(level=logging.DEBUG,
format=log_format,
filename='dev.log',
filemode='w')
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(logging.Formatter(log_format))
logging.getLogger(name).addHandler(console)
return logging.getLogger(name)
然後從每一個模塊你想從登錄,打電話與要記錄器名稱此功能,您的所有模塊,將打印由filename
參數定義相同的日誌文件。
<base.py>
logger = get_logger('base')
logger.info('testing logger from module base')
<module2.py>
logger = get_logger('module2')
logger.info('testing logger from module module2')
<dev.log>
2017-08-11 00:34:00,361 base INFO testing logger from module base
2017-08-11 00:34:00,361 module2 INFO testing logger from module module2
logging.basicConfig()
你看了[有關記錄的文檔(https://docs.python.org/2/library/logging.html)? – agtoever
我閱讀了文檔,但我不確定它爲什麼可以使用記錄器(somename),但不能與記錄器(__ name__) https://docs.python.org/2/howto/logging-cookbook.html示例 –