我想在我的主程序中创建一个Python日志记录对象,并记录我的主程序和它在相同日志记录级别使用的模块。 logging documentation中给出的基本示例基本如下:
main.py:
import logging
import mylib
def main():
logging.basicConfig(level = logging.INFO)
logging.info('Started')
mylib.do_something()
logging.info('Finished')
if __name__ == '__main__':
main()
mylib.py:
import logging
def do_something():
logging.info('Doing something')
这很好用。但是,我不确定如何让Python日志记录对象执行类似的操作。例如,以下内容不起作用:
main.py:
import logging
import mylib
def main():
verbose = True
global log
log = logging.getLogger(__name__)
if verbose:
log.setLevel(logging.INFO)
else:
log.setLevel(logging.DEBUG)
log.info('Started')
mylib.do_something()
log.info('Finished')
if __name__ == '__main__':
main()
mylib.py:
import logging
def do_something():
log.info('Doing something')
它不起作用,因为log
模块中无法识别全局mylib.py
对象。我该怎么做?我的两个主要目标是
log.info("alert")
而不是logging.info("alert")
)。答案 0 :(得分:3)
您的应用程序应配置一次记录(使用basicConfig
或查看logging.config
),然后在每个文件中配置:
import logging
log = logging.getLogger(__name__)
# further down:
log.info("alert")
因此,您在任何地方都使用记录器,而不是直接访问代码库中的logging
模块。这允许您在日志配置中配置所有记录器(如前所述,它配置一次并在应用程序开始时加载)。
答案 1 :(得分:1)
您可以在每个模块中使用不同的记录器,如下所示:
import logging
LOG = logging.getLogger(__name__)
# Stuff
LOG.info("A log message")