1、日志:用来记录程序运行过程中的各种时间,日志一般分为五个级别,未指定级别时一般默认为warning级别,(只输出大于指定级别的日志)。
最高级:DEBUG级别用来调试,INFO级别程序正常运行过程中产生的一些信息,WARNING警告用户虽然程序在运行,但有可能会发生错误,ERROR由于某些严重错误,程序已经不能执行某些功能,CRITICAL代码发生严重错误,已经不能运行。
实例:
import logging
print('this is a logging')
logging.debug("this is a debug logging")
logging.info("this is a info logging")
logging.warning("this is a warning logging")
logging.critical("this is a critical logging")
默认的日志输出级别是warning,故只会输出后边两种日志。
指定日志输出级别:使用logging.basicConfig()函数
print('this is a logging')
logging.basicConfig(level=logging.DEBUG)
logging.debug("this is a debug logging")
logging.info("this is a info logging")
logging.warning("this is a warning logging")
logging.critical("this is a critical logging")
整个日志标准库是一个多线程。所有通过logging输出的日志是一致的,但是不能保证与print一致。print与logging不能混。
2、print仅仅输出打印内容(字符串),logging不仅输出字符串,且输出当前日志级别,root:记录器。
3、像文件中输出日志:basicConfig(),将日志信息输出到当前目录下(自己创建文件),默认的输出日志内容是追加在文件内容之后的。
logging.basicConfig(filename = 'demo.log', level = logging.DEBUG)
先清空文件在写入文件:
logging.basicConfig(filename = 'demo.log', filemode = 'w', level = logging.DEBUG)
也可给日志中放入变量:(以%的形式给定变量)
logging.basicConfig(level = logging.DEBUG)
logging.debug("姓名 %s, 年龄 %d","张三", 18)
以%运算符格式化字符串:
logging.basicConfig(level = logging.DEBUG)
logging.debug("姓名 %s, 年龄 %d" %(name, age))
以format格式
logging.basicConfig(level = logging.DEBUG)
logging.debug("姓名{}, 年龄 {}".format(name, age))
以f-string方法:定义日志内容主体
logging.debug(f"姓名{name}, 年龄{age}")
输出添加格式和公共信息:%(format)s表示输出日志内容,一定会有
logging.basicConfig(format = "%(message)s",level=logging.DEBUG)
name = "lida"
age = 18
logging.debug("姓名:{},年龄{}".format(name,age))
asctime:当前日志运行时间,levelname:日志级别姓名,message:日志内容,filename:文件名。
logging.basicConfig(format = "%(asctime)s | %(levelname)s |%(message)s",level=logging.DEBUG)
name = "lida"
age = 18
logging.debug("姓名:{},年龄{}".format(name,age))
自定义时间参数类型:datefmt,
logging.basicConfig(format = "%(asctime)s | %(message)s | %(levelname)s",
datefmt="%Y-%m-%d %H:%M:%S",level=logging.DEBUG)
logging.debug("姓名:{},年龄{}".format("cahi",24))
1、log = logging.getLogger(__name__)对日志进行初始化,name可不填。多次使用相同的名字调用getLogger()会一直返回相同的Logger对象的引用。
log.info()程序正常运行过程中产生的一些信息。
2、os.getenv(key,default = None)返回环境变量键得值(存在情况),否则返回默认值