赞
踩
日志级别 | 描述 |
---|---|
DEBUG | 最详细的日志信息,典型应用场景是问题诊断 |
INFO | 信息详细程度仅次于DEBUG,通常只记录关键节点信息 |
WARNING | 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的 |
ERROR | 由于一个更严重的问题导致某些功能不能正常运行时记录的信息 |
CRITICAL | 当发生严重错误,导致运用程序不能继续运行时记录的信息 |
python中的日志是全局模型存在的,新建好了一个日志后,可以根据该日志对应的文件名字在其他脚本中获取,同时可以根据时间、日志数量或大小进行分多文件记录,下面通过代码进行简要的展示。
不分文件
import logging import os # 日志记录时的时间格式 message_format = '%(asctime)s %(levelname)s %(pathname)s(line:%(lineno)d) %(message)s' def getLog(log_path, filename="single.log"): ''' 根据日志文件名称获取日志,如果该日志不存在,则新建一个 ''' # 设计日置级别,格式 log_file = os.path.join(log_path,filename) logging.basicConfig(level=logging.INFO,format=message_format) #根据日志名称获取对应日志 log=logging.getLogger(filename) if not log.handlers: #避免重复加载handler file= logging.FileHandler(log_file,encoding='utf-8') file.setFormatter(logging.Formatter(message_format)) log.addHandler(file) return log log = getLog(".", "mylog.txt") log.debug("This is a debug log.") log.info("This is a info log.") log.warning("This is a warning log.") log.error("This is a error log.") log.critical("This is a critical log.")
保存的内容如下:
2024-04-19 20:04:10,964 INFO /tmp/ipykernel_43817/3086240563.py(line:23) This is a info log.
2024-04-19 20:04:10,965 WARNING /tmp/ipykernel_43817/3086240563.py(line:24) This is a warning log.
2024-04-19 20:04:10,966 ERROR /tmp/ipykernel_43817/3086240563.py(line:25) This is a error log.
2024-04-19 20:04:10,967 CRITICAL /tmp/ipykernel_43817/3086240563.py(line:26) This is a critical log.
其中debug没有打印出来,原因是当前日志级别为INFO,而DEBUG比它小,所以被忽略了。
日志级别排名如下:
DEBUG
INFO
NOTICE
WARNING
ERROR
CRITICAL
ALERT
EMERGENCY
按时间进行多文件记录
# 日志记录时的时间格式 message_format = '%(asctime)s %(levelname)s %(pathname)s(line:%(lineno)d) %(message)s' def getTimeLog(log_path, filename="time.log",when="S"): # 参数when的选择范围如下: # S - Seconds # M - Minutes # H - Hours(默认) # D - Days # midnight - roll over at midnight # W{0-6} - roll over on a certain day; 0 - Monday log_file = os.path.join(log_path,filename) logging.basicConfig(level=logging.INFO,format=message_format) log = logging.getLogger(filename) if not log.handlers: file =logging.handlers.TimedRotatingFileHandler(log_file,when=when,encoding='utf-8') file.setFormatter(logging.Formatter(message_format)) log.addHandler(file) return log
按文件大小、数量进行多文件记录
message_format = '%(asctime)s %(levelname)s %(pathname)s(line:%(lineno)d) %(message)s' def getFileSizeLog(log_path, filename="size.log",filesize=100*1024*1024,backupCount=30): ''' filesize:单个日志文件最大值,单位是bytes,默认100*1024*1024=100M backupCount:存储拆分文件个数,如果总的容量不够,会删除最开始的日志文件 ''' log_file = os.path.join(log_path,filename) logging.basicConfig(level=logging.INFO, format=message_format) log = logging.getLogger(filename) #定义过滤条件 if not log.handlers: file=logging.handlers.RotatingFileHandler(log_file,maxBytes=filesize,backupCount=backupCount,encoding='utf-8') file.setFormatter(logging.Formatter(message_format)) log.addHandler(file) return log
更全面的Python日志详解请参考:https://www.cnblogs.com/yyds/p/6901864.html
https://www.cnblogs.com/nancyzhu/p/8551506.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。