日志的类别
日志级别
描述
DEBUG
最详细的日志信息,典型应用场景是问题诊断
INFO
信息详细程度仅次于DEBUG,通常只记录关键节点信息
WARNING
当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR
由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL
当发生严重错误,导致运用程序不能继续运行时记录的信息
python中的具体用法
python中的日志是全局模型存在的,新建好了一个日志后,可以根据该日志对应的文件名字在其他脚本中获取,同时可以根据时间、日志数量或大小进行分多文件记录,下面通过代码进行简要的展示。
不分文件
# 日志记录时的时间格式
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
按时间进行多文件记录
# 日志记录时的时间格式
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