python基础 logging模块
Posted flag_HW
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础 logging模块相关的知识,希望对你有一定的参考价值。
简单logging模块入门
1 import logging 2 #五种日志级别,默认输出到屏幕;默认打印warning级别及以上的日志 3 logging.debug("test debug") 4 logging.info("test info") 5 logging.warning("test warning") 6 logging.error("test error") 7 logging.critical("test critical") 8 9 #设置日志输出相关参数,filename 日志输出的文件路径,此时日志不在输出到文件。level 输出到文件的日志级别;format里面是时间格式与日志信息,datefmt为日志时间戳格式 10 #注意:logging.basicConfig之前不能使用logging打印日志否则logging.basicConfig不会把日志输出到文件,还是会输出到屏幕 11 logging.basicConfig(filename="test3", 12 level=logging.INFO, 13 format=‘%(asctime)s %(levelname)s %(message)s‘, 14 datefmt="%m/%d/%Y %I:%M:%S") 15 logging.warning("test warning")
日志格式中各个属性值的含义总结
%(names)s logger的名字
%(levelno)s 数字格式日志级别
%(levelname)s 文字格式日志级别
%(pathname)s 调用日志的函数模块完整路径
%(filename)s 调用日志输出的模块文件名
%(module)s 调用日志输出的函数模块名
%(funcName)s 调用日志输出的函数的函数名
%(lineno)d 调用日志输出函数的语句所在代码行
%(created)f unix标准的时间戳格式时间
%(relativeCreated)d Logger创建以来的毫秒数
%(asctime)s 字符串格式的当前时间
%(thread)s 线程id
%(threadName)s 线程名
%(process)d 进程id
%(message)s 日志消息
日志输出到不同文件
1 import logging 2 """ 3 python 使用logging模块涉及四个主要的类 4 logger 提供了应用程序能够直接使用的接口 5 handler将日志发送到合适的目的输出 6 filter提供过滤功能,决定输出哪条日志 7 formatter决定日志输出的最终格式 8 """ 9 #创建一个logger,并设置日志级别为debug 10 logger1 = logging.getLogger("logger_name") 11 logger1.setLevel(logging.DEBUG) 12 13 #创建一个屏幕输出的handler并设置日志级别为info 14 sh = logging.StreamHandler() 15 sh.setLevel(logging.INFO) 16 17 #创建一个文件输出的handler并设置日志界别为warning,输出日志文件为file_log 18 fh = logging.FileHandler("file_log.log") 19 fh.setLevel(logging.WARNING) 20 21 #设置日志格式,,此处的格式与logging.basicConfig参数含义相同,name是对应logging.getLogger的实参 22 formatter1 = logging.Formatter(‘%(asctime)s %(levelname)s %(name)s %(message)s‘) 23 24 #将日志格式添加到handler上,不同format可以关联到不同hd上 25 sh.setFormatter(formatter1) 26 fh.setFormatter(formatter1) 27 28 #将hd于logger关联,一次只能关联一个 29 logger1.addHandler(sh) 30 logger1.addHandler(fh) 31 32 logger1.error("test error") 33 logger1.info("test info") 34 """ 35 屏幕输出 36 2019-12-11 21:54:10,961 ERROR logger1 test error 37 2019-12-11 21:54:10,961 INFO logger1 test info 38 文件输出 39 2019-12-11 21:54:10,961 ERROR logger1 test error 40 """
日志切分
1 #日志的自动切割,需要单独导入handlers 2 from logging import handlers 3 logger2 = logging.getLogger(__name__) #将此程序的名字传入 4 #创建handler且指定文件切割的方式,每个文件存储3个字节日志,保留最近的3个文件并设置文件级别 5 fh1 = handlers.RotatingFileHandler(filename="split_byte.log", maxBytes=2, backupCount=3) 6 #创建handler且指定文件以时间为标准进行切割,每隔5秒切割一次,最多保留3个文件。 S秒 H小时 M分钟 D天 W每星期(interval==0代表星期一) midnight每天凌晨 7 fh2 = handlers.TimedRotatingFileHandler(filename="split_time", when="S", interval=5, backupCount=3) 8 fh1.setLevel(logging.INFO) 9 fh1.setFormatter(formatter1) 10 logger2.addHandler(fh1) 11 logger2.warning("this is a waring log,split log test xxxxxxxdddddddddddddddddddddddddddddddddddd") 12 logger2.warning("this is a waring log,split log test xxxxxxx")
以上是关于python基础 logging模块的主要内容,如果未能解决你的问题,请参考以下文章