3 回答

TA贡献1802条经验 获得超4个赞
最佳实践是在每个模块中都定义一个记录器,如下所示:
import logging
logger = logging.getLogger(__name__)
在模块顶部附近,然后在模块中的其他代码中执行例如
logger.debug('My message with %s', 'variable data')
如果您需要在模块内部细分日志记录活动,请使用例如
loggerA = logging.getLogger(__name__ + '.A')
loggerB = logging.getLogger(__name__ + '.B')
并登录loggerA并loggerB视情况而定。
在您的一个或多个主程序中,执行例如:
def main():
"your program code"
if __name__ == '__main__':
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
main()
要么
def main():
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
# your program code
if __name__ == '__main__':
main()
见这里用于从多个模块记录,并在这里用于代码日志配置将被用作其它的代码库模块。
更新:调用时fileConfig(),您可能想指定disable_existing_loggers=False是否使用Python 2.6或更高版本(有关更多信息,请参阅文档)。缺省值是True向后兼容的,这将导致禁用所有现有记录器,fileConfig()除非它们或它们的祖先在配置中明确命名。将该值设置为False,将保留现有记录器。如果使用的是Python 2.7 / Python 3.2或更高版本,则不妨考虑使用dictConfig()API,fileConfig()因为它可以更好地控制配置,因此它比API更好。
添加回答
举报