我試圖添加日誌記錄(到控制檯而不是文件)我的一段代碼,我一直在努力。閱讀了一下後,我有一種我認爲應該起作用的模式,但是我不太確定我要出錯的位置。跨多個模塊的Python日誌記錄
我有以下三個文件(簡化,顯然):
controller.py
import my_module
import logging
from setup_log import configure_log
def main():
logger = configure_log(logging.DEBUG, __name__)
logger.info('Started logging')
my_module.main()
if __name__ == "__main__":
main()
setup_log.py
import logging
def configure_log(level=None, name=None):
logger = logging.getLogger(name)
logger.setLevel(level)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
chFormatter = logging.Formatter('%(levelname)s - %(filename)s - Line: %(lineno)d - %(message)s')
console_handler.setFormatter(chFormatter)
logger.addHandler(console_handler)
return logger
my_module.py
import logging
def main():
logger = logging.getLogger(__name__)
logger.info("Starting my_module")
print "Something"
if __name__ == "__main__":
main()
當我跑步時em,只有第一次調用logging纔會產生一個輸出到控制檯 - 'Started logging'。第二次調用日誌記錄 - 「啓動我的模塊」剛剛通過。
我誤會了什麼?
如果你想以完全相同的方式配置它們,你爲什麼要首先配置兩個單獨的記錄器('__main__'和'my_module')?爲什麼不只是使用'getLogger()'配置一次,並在任何地方使用? – abarnert