实现思路
- 导入
logging
模块以及threading
模块,用于日志记录和获取线程名。
- 自定义日志格式,包含时间、线程名、日志级别和日志信息。
- 创建一个日志记录器
logger
。
- 创建文件处理器
file_handler
和控制台处理器console_handler
。
- 将自定义的日志格式应用到两个处理器上。
- 将两个处理器添加到日志记录器
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()