我正在尝试为我已经开发了一段时间的代码添加日志记录(输出到控制台而不是文件)。通过阅读一些资料,我得出了一个应该有效的模式,但我不太确定哪里出了问题。
我有以下三个文件(显然是简化版):
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()
设置日志.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
我的模块.py
import logging
def main():
logger = logging.getLogger(__name__)
logger.info("Starting my_module")
print "Something"
if __name__ == "__main__":
main()
当我运行它们时,只有第一次调用日志记录才会产生输出到控制台 -“开始日志记录”。对于第二次调用日志记录 - “启动我的模块”,它只是被忽略了。我误解/搞砸了什么?
__main__
和my_module
)?为什么不只使用getLogger()
进行一次配置并在所有地方都使用它呢? - abarnert