TrafficWheel/lib/logger.py

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')