51 lines
1.6 KiB
Python
Executable File
51 lines
1.6 KiB
Python
Executable File
import os
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
|
|
def get_logger(root, name=None, debug=True):
|
|
"""
|
|
创建带时间戳的日志记录器
|
|
:param root: 日志文件目录
|
|
:param name: 日志名称
|
|
:param debug: 是否开启调试模式
|
|
"""
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
# 避免重复添加 Handler
|
|
if logger.hasHandlers():
|
|
logger.handlers.clear()
|
|
|
|
# 时间格式改为 年/月/日 时:分:秒
|
|
formatter = logging.Formatter("%(asctime)s - %(message)s", "%Y/%m/%d %H:%M:%S")
|
|
|
|
# 控制台输出
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setFormatter(formatter)
|
|
console_handler.setLevel(logging.DEBUG if debug else logging.INFO)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 文件输出(仅非 debug 模式)
|
|
if not debug:
|
|
os.makedirs(root, exist_ok=True)
|
|
logfile = os.path.join(root, "run.log")
|
|
print(f"Create Log File in: {logfile}")
|
|
file_handler = logging.FileHandler(logfile, mode="w", encoding="utf-8")
|
|
file_handler.setLevel(logging.DEBUG)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|
|
|
|
|
|
if __name__ == "__main__":
|
|
time_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
|
print(time_str)
|
|
|
|
logger = get_logger("./logs", debug=False) # 改成 False 测试文件输出
|
|
logger.debug("this is a {} debug message".format(1))
|
|
logger.info("this is an info message")
|
|
logger.debug("this is a debug message")
|
|
logger.info("this is an info message")
|