Translated by AI model Qwen/Qwen3-8B.
Source Language: Simplified Chinese, Target Language: english, Translation Time: 2026-05-01 04:03
.AI translation is for reference only. Accuracy is not guaranteed, please refer to the original text.
Introduction
Enable Python logs to output simultaneously to the console and file, facilitating debugging and viewing logs.
Code Implementation
import logging
from pathlib import Path
import sys
def init_logger(level: str = "INFO", filename: str | Path | None = None) -> logging.Logger:
"""
初始化 logger
:param level: 日志级别
:param filename: 日志文件名
:return: logger 实例
"""
# 创建 logger
logger = logging.getLogger(__name__)
logger.setLevel(level) # 设置 logger 的级别
logger.handlers.clear() # 清空已有的处理器
# 1. 创建文件处理器
if not filename is None:
log_dir = Path(filename).parent
if not log_dir.exists():
log_dir.mkdir(parents=True, exist_ok=True)
file_handler = logging.FileHandler(Path(filename), encoding='utf-8')
file_handler.setLevel(level)
else:
file_handler = None
# 2. 创建控制台处理器
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(level)
# 3. 设置日志格式
formatter = logging.Formatter(
"%(asctime)s - %(levelname)s - %(message)s"
)
file_handler.setFormatter(formatter) if not file_handler is None else None
console_handler.setFormatter(formatter)
# 4. 将处理器添加到 logger
logger.handlers.clear() # 清空已有的处理器
if not file_handler is None:
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
if __name__ == "__main__":
logger = init_logger()
logger.info("这是一条 info 日志")
logger.error("这是一条 error 日志")
# 重新初始化 logger
logger = init_logger("DEBUG")
logger.info("重新初始化 logger 后的第一条 info 日志")
logger.debug("这是一条 debug 日志")
If you enjoyed this, leave a comment~