python基础 logging模块
简单logging模块入门
import logging #五种日志级别,默认输出到屏幕;默认打印warning级别及以上的日志 logging.debug("test debug") logging.info("test info") logging.warning("test warning") logging.error("test error") logging.critical("test critical") #设置日志输出相关参数,filename 日志输出的文件路径,此时日志不在输出到文件。level 输出到文件的日志级别;format里面是时间格式与日志信息,datefmt为日志时间戳格式 #注意:logging.basicConfig之前不能使用logging打印日志否则logging.basicConfig不会把日志输出到文件,还是会输出到屏幕 logging.basicConfig(filename="test3", level=logging.INFO, format=‘%(asctime)s %(levelname)s %(message)s‘, datefmt="%m/%d/%Y %I:%M:%S") 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 日志消息日志输出到不同文件
import logging """ python 使用logging模块涉及四个主要的类 logger 提供了应用程序能够直接使用的接口 handler将日志发送到合适的目的输出 filter提供过滤功能,决定输出哪条日志 formatter决定日志输出的最终格式 """ #创建一个logger,并设置日志级别为debug logger1 = logging.getLogger("logger_name") logger1.setLevel(logging.DEBUG) #创建一个屏幕输出的handler并设置日志级别为info sh = logging.StreamHandler() sh.setLevel(logging.INFO) #创建一个文件输出的handler并设置日志界别为warning,输出日志文件为file_log fh = logging.FileHandler("file_log.log") fh.setLevel(logging.WARNING) #设置日志格式,,此处的格式与logging.basicConfig参数含义相同,name是对应logging.getLogger的实参 formatter1 = logging.Formatter(‘%(asctime)s %(levelname)s %(name)s %(message)s‘) #将日志格式添加到handler上,不同format可以关联到不同hd上 sh.setFormatter(formatter1) fh.setFormatter(formatter1) #将hd于logger关联,一次只能关联一个 logger1.addHandler(sh) logger1.addHandler(fh) logger1.error("test error") logger1.info("test info") """ 屏幕输出 2019-12-11 21:54:10,961 ERROR logger1 test error 2019-12-11 21:54:10,961 INFO logger1 test info 文件输出 2019-12-11 21:54:10,961 ERROR logger1 test error """
日志切分
#日志的自动切割,需要单独导入handlers from logging import handlers logger2 = logging.getLogger(__name__) #将此程序的名字传入 #创建handler且指定文件切割的方式,每个文件存储3个字节日志,保留最近的3个文件并设置文件级别 fh1 = handlers.RotatingFileHandler(filename="split_byte.log", maxBytes=2, backupCount=3) #创建handler且指定文件以时间为标准进行切割,每隔5秒切割一次,最多保留3个文件。 S秒 H小时 M分钟 D天 W每星期(interval==0代表星期一) midnight每天凌晨 fh2 = handlers.TimedRotatingFileHandler(filename="split_time", when="S", interval=5, backupCount=3) fh1.setLevel(logging.INFO) fh1.setFormatter(formatter1) logger2.addHandler(fh1) logger2.warning("this is a waring log,split log test xxxxxxxdddddddddddddddddddddddddddddddddddd") logger2.warning("this is a waring log,split log test xxxxxxx")
相关推荐
bearhoopIT之道 2020-08-16
Kakoola 2020-08-01
凯哥Java 2020-07-04
haidaoxianzi 2020-07-04
delmarks 2020-06-28
aNian 2020-06-16
qingjiuquan 2020-06-07
fraternityjava 2020-06-04
明瞳 2020-06-04
HappyHeng 2020-05-28
88473166 2020-05-14
zkwgpp 2020-05-07
oXiaoChong 2020-05-07
ChainDestiny 2020-05-07
doomvsjing 2020-05-07
xuMelon 2020-05-04
MrLiar 2020-04-27