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模块的主要内容,如果未能解决你的问题,请参考以下文章

python之基础篇——模块与包

python基础 logging模块

Python基础模块:logging模块

Python基础-logging模块

python基础12--logging等模块

Python基础-----logging模块