MST

星途 面试题库

面试题:Python日志模块中自定义日志格式与多处理器配置

假设你需要在一个多线程的Python应用中使用日志模块,要求自定义日志格式,格式需包含时间、线程名、日志级别和日志信息。同时,配置多个处理器,一个将日志输出到文件,另一个输出到控制台,详细说明实现思路并给出完整代码示例。
31.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 导入logging模块以及threading模块,用于日志记录和获取线程名。
  2. 自定义日志格式,包含时间、线程名、日志级别和日志信息。
  3. 创建一个日志记录器logger
  4. 创建文件处理器file_handler和控制台处理器console_handler
  5. 将自定义的日志格式应用到两个处理器上。
  6. 将两个处理器添加到日志记录器logger中。

代码示例

import logging
import threading
import time


# 创建日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 自定义日志格式
formatter = logging.Formatter('%(asctime)s - %(threadName)s - %(levelname)s - %(message)s')

# 创建文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setFormatter(formatter)

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)

# 将处理器添加到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)


def worker():
    logger.info('线程开始工作')
    time.sleep(1)
    logger.info('线程工作结束')


if __name__ == "__main__":
    for i in range(3):
        t = threading.Thread(target=worker, name=f"Thread-{i}")
        t.start()