本项目分为logger.py(日志模块)和主函数两块,生成的日志信息将同时输出在控制台和日志文件中。
logger.py
import logging
import os
import time
def setup_logger():
# 获取或创建一个名为 __name__ 的日志记录器对象
logger = logging.getLogger(__name__)
# 设置日志记录器对象的日志级别为 INFO
logger.setLevel(level=logging.INFO)
log_dir = "outlogs" # 设置日志文件保存的目录名称
os.makedirs(log_dir, exist_ok=True) # 如果目录不存在,则创建目录
current_time = time.time() # 获取当前时间戳
log_file_name = f"{log_dir}/{current_time}.log" # 构建日志文件名
handler = logging.FileHandler(log_file_name) # 创建一个文件处理器,用于将日志记录到文件
handler.setLevel(logging.INFO) # 设置文件处理器的日志级别为 INFO
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') # 创建日志格式
handler.setFormatter(formatter) # 将日志格式应用到文件处理器
console = logging.StreamHandler() # 创建一个流处理器,用于将日志输出到控制台
console.setLevel(logging.INFO) # 设置流处理器的日志级别为 INFO
console.setFormatter(formatter) # 将日志格式应用到流处理器
logger.addHandler(handler) # 将文件处理器添加到日志记录器对象
logger.addHandler(console) # 将流处理器添加到日志记录器对象
return logger # 返回配置好的日志记录器对象
main.py
import logging
from logger import setup_logger
# 获取日志记录器对象
logger = setup_logger()
# 使用日志记录器对象记录日志
logger.info('Start print log')
logger.debug('Do something')
logger.warning('Something maybe fail.')
logger.info('Finish')
使用main函数调用日志模块,python控制台以及日志文件的输出均如下:
2023-11-19 16:23:39 - test - INFO - Start print log
2023-11-19 16:23:39 - test - WARNING - Something maybe fail.
2023-11-19 16:23:39 - test - INFO - Finish