参考:
1.视频:https://www.youtube.com/watch?v=dvtjV4Xmtj0
2. https://cuiqingcai.com/6080.html
3.https://rgb-24bit.github.io/blog/2018/python-logging.html#org7bce4f7
1.简单用法,不能同时输出到屏幕加文件。 可以用logging.basicConfig()配置。
# Demo https://rgb-24bit.github.io/blog/2018/python-logging.html
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged')
在这里我们首先引入了 logging 模块,然后进行了一下基本的配置,这里通过 basicConfig 配置了 level 信息和 format 信息,这里 level 配置为 INFO 信息,即只输出 INFO 级别的信息,
另外这里指定了 format 格式的字符串,包括 asctime、name、levelname、message 四个内容,分别代表运行时间、模块名称、日志级别、日志内容,这样输出内容便是这四者组合而成的内容了,这就是 logging 的全局配置
2.1 若要同时输出到屏幕加文件。需要用handler 处理
import os
import logging
logger = logging.getLogger() # create instance 对象实例
fh = logging.FileHandler('logging_test.log')
ch = logging.StreamHandler()
fm=logging.Formatter("%(asctime)s %(message)s")
fh.setFormatter(fm)
ch.setFormatter(fm)
logger.addHandler(fh)
logger.addHandler(ch)
logger.setLevel("DEBUG") # 默认为warning, 打印3行
logger =logger()
logger.debug('debug')
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
2.2. 基本用法如2.1.
一般可以封装为一个函数,返回logger ,直接调用。
import os import logging ''' # Demo https://rgb-24bit.github.io/blog/2018/python-logging.html logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logging.warning('This will get logged') ''' def logger(): logger = logging.getLogger() # create instance fh = logging.FileHandler('logging_test.log') ch = logging.StreamHandler() fm=logging.Formatter("%(asctime)s %(message)s") fh.setFormatter(fm) ch.setFormatter(fm) logger.addHandler(fh) logger.addHandler(ch) logger.setLevel("DEBUG") return logger logger =logger() logger.debug('debug') logger.info("info") logger.warning("warning") logger.error("error") logger.critical("critical")
3. Log 是树形关系,子log. 避免才坑,参考视频:
参考视频:https://www.youtube.com/watch?v=dvtjV4Xmtj0