面试题答案
一键面试- 基本配置:
- 首先导入
logging
模块。在Python应用程序中,要使用logging
模块记录错误日志,可通过以下基本步骤: - 使用
logging.basicConfig
来进行基础配置,例如设置日志级别、日志格式等。 - 以下是一个简单示例:
- 首先导入
import logging
# 配置日志
logging.basicConfig(
level = logging.ERROR,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
filename='error.log'
)
try:
result = 1 / 0
except ZeroDivisionError as e:
logging.error(f"发生错误: {e}", exc_info=True)
- 多模块配置:
- 在多模块应用程序中,为确保日志记录在不同模块中都能正确配置且有序输出,可以在每个模块中获取各自的
logger
实例。 - 主模块配置日志,子模块通过
logging.getLogger(__name__)
获取logger
。 - 以下是具体代码结构:
- 主模块
main.py
:
- 在多模块应用程序中,为确保日志记录在不同模块中都能正确配置且有序输出,可以在每个模块中获取各自的
import logging
import submodule
# 配置日志
logging.basicConfig(
level = logging.ERROR,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
filename='error.log'
)
def main():
try:
submodule.do_something()
except Exception as e:
logging.error(f"主模块捕获到错误: {e}", exc_info=True)
if __name__ == "__main__":
main()
- 子模块
submodule.py
:
import logging
logger = logging.getLogger(__name__)
def do_something():
try:
result = 1 / 0
except ZeroDivisionError as e:
logger.error(f"子模块发生错误: {e}", exc_info=True)
上述代码中,basicConfig
设置了日志级别为ERROR
,意味着只有错误级别及以上的日志会被记录。日志格式包含时间、模块名、日志级别和日志信息,并将日志输出到error.log
文件中。在多模块情况下,每个模块通过getLogger(__name__)
获取自己的logger
实例,这样不同模块的日志记录可以有序且正确配置。exc_info=True
参数会在日志中记录异常的详细信息,便于调试。