python3中logging控制台输出及日志分割
文章目录
python3中logging用法
logging-仅控制台输出
# 日志格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')
# 控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
# 初始logge
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
logger.addHandler(console_handler) # 日志-控制台输出
logging-仅写文件
# 日志格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')
# 控制台输出
file_handler = logging.FileHandler(filename="test.log", encoding='utf-8')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
# 初始logge
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler) # 日志-写入文件
综合示例
# 获取日志logger,注意创建目录
def get_logger(filename: str):
# 日志格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')
# 1. 日志-控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
# 2. 日志-写文件
file_handler = logging.FileHandler(filename=filename, encoding='utf-8')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
# 3. 日志-写文件-按文件大小分割
size_handler = handlers.RotatingFileHandler(filename, maxBytes=100 * 1024 * 1024, backupCount=10, encoding='utf-8') # 文件大小达到100MB时创建一个日志文件,文件数不超过10个
size_handler.setFormatter(formatter)
size_handler.setLevel(logging.DEBUG)
# 4. 日志-写文件-按时间分割
time_handler = handlers.TimedRotatingFileHandler(filename, when="D", backupCount=30, encoding='utf-8') # 每隔天创建一个日志文件,文件数不超过30个
time_handler.setFormatter(formatter)
time_handler.setLevel(logging.DEBUG)
# 初始logger,注意创建目录
logger = logging.getLogger(filename)
logger.setLevel(logging.DEBUG)
# ------------------- 按需选择日志handler (2,3,4只需选一) ---------------------------
# logger.addHandler(console_handler) # 日志-控制台输出
# logger.addHandler(file_handler) # 日志-写入文件
logger.addHandler(size_handler) # 日志-写文件-按文件大小分割
# logger.addHandler(time_handler) # 日志-写文件-按时间分割
return logger